You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ISO时间格式转换为带AM/PM的指定日期时间显示格式?

解决ISO时间格式转换问题

你可以通过原生JavaScript的Date对象结合自定义逻辑实现需求,以下是两种可行方案:

方法一:手动提取字段格式化

直接操作Date对象的方法提取日期时间组件,按需拼接成目标格式:

function formatISODate(isoString) {
  const date = new Date(isoString);
  // 定义月份缩写数组
  const monthAbbr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", 
                     "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
  
  // 提取日期部分(UTC时间)
  const day = date.getUTCDate();
  const month = monthAbbr[date.getUTCMonth()];
  const year = date.getUTCFullYear();
  
  // 处理12小时制时间
  let hours = date.getUTCHours();
  const ampm = hours >= 12 ? 'PM' : 'AM';
  hours = hours % 12;
  hours = hours || 12; // 将0点转为12点
  
  // 补零处理分秒
  const minutes = date.getUTCMinutes().toString().padStart(2, '0');
  const seconds = date.getUTCSeconds().toString().padStart(2, '0');
  
  // 拼接最终格式
  return `${day} ${month} , ${year} :${hours}:${minutes}:${seconds} ${ampm}`;
}

// 测试示例
const currdate = "2022-11-28T10:26:00.949Z";
console.log(formatISODate(currdate)); // 输出:28 Nov , 2022 :10:26:00 AM

方法二:利用Intl.DateTimeFormat简化实现

借助浏览器原生国际化API,更简洁地完成格式化:

function formatISODate(isoString) {
  const date = new Date(isoString);
  
  // 生成日期部分并调整格式(将"Nov 28, 2022"转为"28 Nov , 2022")
  const dateFormatter = new Intl.DateTimeFormat('en-US', {
    day: 'numeric',
    month: 'short',
    year: 'numeric',
    timeZone: 'UTC'
  });
  const [month, day, year] = dateFormatter.format(date).split(' ');
  const formattedDate = `${day} ${month} , ${year}`;
  
  // 生成12小时制时间部分
  const timeFormatter = new Intl.DateTimeFormat('en-US', {
    hour: 'numeric',
    minute: '2-digit',
    second: '2-digit',
    hour12: true,
    timeZone: 'UTC'
  });
  const formattedTime = timeFormatter.format(date).replace(',', '');
  
  // 拼接结果
  return `${formattedDate} :${formattedTime}`;
}

// 测试示例
const currdate = "2022-11-28T10:26:00.949Z";
console.log(formatISODate(currdate)); // 输出:28 Nov , 2022 :10:26:00 AM

注意事项

  • 上述示例默认使用UTC时间转换,若需转为本地时间,只需将getUTCDate()等UTC方法替换为getDate(),并移除Intl配置中的timeZone: 'UTC'即可。

内容的提问来源于stack exchange,提问作者abhigyan kr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:10:48