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

如何使Date-fns生成与Moment格式一致的日期(含序数词、小写时段)

解决Date-fns日期格式中添加序数词后缀及时段小写的问题

你可以通过使用date-fns的format函数(而非intlFormat)并配合自定义格式字符串,来实现和moment一致的输出效果:

实现步骤

  1. 引入date-fns的format函数以及英文本地化配置(确保序数词和时段格式正确)
  2. 使用自定义格式字符串指定输出样式,其中:
    • do 表示带序数词后缀的月份日期(如11th)
    • a 表示小写的时段标识(如pm)

完整代码示例

const moment = require("moment-timezone");
const { format } = require('date-fns');
const { enUS } = require('date-fns/locale'); 

// Moment原输出
let d0 = moment().format("dddd, MMMM Do YYYY, h:mm:ss a");
console.log(d0);

// Date-fns调整后输出
let d1 = format(new Date(), "dddd, MMMM do YYYY, h:mm:ss a", { locale: enUS });
console.log(d1);

输出结果

Monday, December 11th 2023, 3:55:27 pm
Monday, December 11th 2023, 3:55:27 pm

补充说明

  • 之所以不用intlFormat,是因为它基于浏览器/Node的Intl API,在自定义序数词格式上灵活性不足;而format是date-fns原生的格式化方法,支持更精细的格式控制。
  • 项目中无需额外安装本地化依赖,date-fns包已内置各语言的本地化配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:02