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

LWC中ISO 8601日期转MM-DD-YYYY HH:mm并添加AM/PM方法

在LWC中为ISO 8601日期添加AM/PM标识的解决方案

针对你的需求,这里提供两种可行的实现方式:

方法一:基于现有拆分代码修改

你已经通过split拆分了ISO日期字符串,只需添加小时判断逻辑即可实现AM/PM标识,同时修正格式顺序以匹配MM-DD-YYYY HH:mm的需求:

const dateStr = '2020-06-21T10:15:00Z';
const [yyyy, mm, dd, hh, mi] = dateStr.split(/[/:-T]/);

// 将24小时制小时转为数字,判断AM/PM
const hourNum = Number(hh);
const period = hourNum < 12 ? 'AM' : 'PM';
// 转换为12小时制显示规则(0点转12,13点转1等)
const formattedHour = hourNum % 12 === 0 ? 12 : hourNum % 12;

// 按MM-DD-YYYY HH:mm AM/PM格式输出
console.log(`${mm}-${dd}-${yyyy} ${formattedHour}:${mi} ${period}`);
// 输出:06-21-2020 10:15 AM

方法二:使用Intl.DateTimeFormat(推荐)

手动拆分ISO字符串容易遇到格式变体(如带毫秒的YYYY-MM-DDTHH:mm:ss.sssZ),LWC中推荐使用原生的Intl.DateTimeFormat来处理日期格式化,更健壮且自动兼容时区:

const dateStr = '2020-06-21T10:15:00Z';
const date = new Date(dateStr);

// 配置格式化规则:指定UTC时区、12小时制、两位数字的月/日/时/分
const formatter = new Intl.DateTimeFormat('en-US', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit',
  hour12: true,
  timeZone: 'UTC' // 原日期带Z标识为UTC时间,需指定时区避免本地时区干扰
});

// 格式化后默认用/分隔日期,替换为-以匹配需求格式
const formattedDate = formatter.format(date).replace(/\//g, '-');
console.log(formattedDate);
// 输出:06-21-2020 10:15 AM

注意:如果你的业务需要处理用户本地时区,只需移除timeZone: 'UTC'配置即可自动适配当前用户时区。

内容的提问来源于stack exchange,提问作者subhashini uppalapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:33:14