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

在JavaScript中格式化日期时,能否交换星期与日期的位置?

我按照以下方式格式化了日期,但希望将weekday(星期)放在DD/MM/YYYY之后,是否可以实现?
当前输出:Friday, 16/06/2023, 12:00
期望输出:16/06/2023, Friday, 12:00
使用的代码如下:

const options = {
  weekday: 'long',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',     
  hour: 'numeric',
  minute: 'numeric',
};
const dt = new Date('2023-06-16T12:00:00Z').toLocaleDateString('en-GB', options)
console.log(dt)
解决方案

方法一:拆分格式化后拼接

分别生成日期、星期、时间三个独立部分,再按目标顺序拼接,直观且兼容性强:

const date = new Date('2023-06-16T12:00:00Z');
// 生成DD/MM/YYYY格式的日期
const dateStr = date.toLocaleDateString('en-GB', {
  year: 'numeric',
  month: 'numeric',
  day: 'numeric'
});
// 生成完整星期名称
const weekdayStr = date.toLocaleDateString('en-GB', { weekday: 'long' });
// 生成HH:MM格式的时间
const timeStr = date.toLocaleTimeString('en-GB', {
  hour: 'numeric',
  minute: 'numeric'
});
// 拼接成目标格式
const result = `${dateStr}, ${weekdayStr}, ${timeStr}`;
console.log(result); // 输出:16/06/2023, Friday, 12:00

方法二:用formatToParts自定义组装

通过Intl.DateTimeFormat的formatToParts方法拆分格式化组件,按需重新排序组合,适合精细控制格式的场景:

const date = new Date('2023-06-16T12:00:00Z');
const formatter = new Intl.DateTimeFormat('en-GB', {
  weekday: 'long',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',     
  hour: 'numeric',
  minute: 'numeric',
});
// 获取拆分后的各个格式组件
const parts = formatter.formatToParts(date);
// 提取日期相关组件并拼接
const datePart = parts.filter(p => ['day', 'month', 'year', 'literal'].includes(p.type))
                     .map(p => p.value).join('');
// 提取星期组件
const weekdayPart = parts.find(p => p.type === 'weekday').value;
// 提取时间相关组件并拼接
const timePart = parts.filter(p => ['hour', 'minute', 'literal'].includes(p.type))
                     .map(p => p.value).join('');
// 组装成目标格式
const result = `${datePart}, ${weekdayPart}, ${timePart}`;
console.log(result); // 输出:16/06/2023, Friday, 12:00

方法三:正则表达式替换(快速方案)

如果确认toLocaleDateString输出格式固定,可直接用正则调换星期和日期的位置,适合快速修改:

const options = {
  weekday: 'long',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',     
  hour: 'numeric',
  minute: 'numeric',
};
const originalStr = new Date('2023-06-16T12:00:00Z').toLocaleDateString('en-GB', options);
// 正则替换,调换星期和日期部分的位置
const result = originalStr.replace(/^(\w+), (\d{2}\/\d{2}\/\d{4}), (.*)$/, '$2, $1, $3');
console.log(result); // 输出:16/06/2023, Friday, 12:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:45:46