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

如何用JavaScript生成带序数词的美式英文日期格式?

解决toLocaleDateString显示日期序数词的问题

原生的toLocaleDateString并没有直接支持显示序数词(如1st、2nd)的配置项,因此需要在生成基础日期字符串后,手动处理数字部分为序数词格式。

实现步骤

  1. 编写一个生成序数词后缀的辅助函数,处理不同数字对应的后缀规则:

    function getOrdinalSuffix(day) {
      // 11-19的数字统一用th后缀
      if (day > 3 && day < 21) return 'th';
      switch (day % 10) {
        case 1: return 'st';
        case 2: return 'nd';
        case 3: return 'rd';
        default: return 'th';
      }
    }
    
  2. 生成基础日期字符串后,替换数字部分为带序数词的形式:

    const options = {
      weekday: "short",
      year: "numeric",
      month: "short",
      day: "numeric",
    };
    const baseDate = new Date().toLocaleDateString("en-US", options);
    const day = new Date().getDate();
    // 替换日期中的数字为带序数词的格式
    const formattedDate = baseDate.replace(/(\d+)/, `${day}${getOrdinalSuffix(day)}`);
    
    console.log(formattedDate); // 输出示例: "Thu, Jan 4th, 2024"
    

另一种更灵活的拼接方式

也可以单独获取日期的各个部分,手动拼接成目标格式:

const date = new Date();
const weekday = date.toLocaleDateString("en-US", { weekday: "short" });
const month = date.toLocaleDateString("en-US", { month: "short" });
const day = date.getDate();
const year = date.getFullYear();
const ordinalDay = `${day}${getOrdinalSuffix(day)}`;

const formattedDate = `${weekday}, ${month} ${ordinalDay}, ${year}`;
console.log(formattedDate);

注意事项

ECMAScript国际化API的day配置项仅支持"numeric"和"2-digit"两种取值,没有直接输出序数词的选项,因此必须通过手动处理来实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:52:39