Momentjs Locale - 美国的星期几配置

Momentjs Locale - Day of Week Config for US

我在我正在开发的应用程序的多个地方使用了 Momentjs,它工作正常。但是,我使用的是 endOf('week'),结果是星期六。我期待的是星期天。

我一直在努力查找有关它的信息,但它并没有突出显示如何绕过它而无需在使用它的所有地方更改代码。根据我的研究,Moment 会自动应用语言环境。通过查看其中一个语言环境文件,我可以看到星期几 (dow) 的配置位置。

示例:moment/locale/en-gb.js

    week : {
        dow : 1, // Monday is the first day of the week.
        doy : 4  // The week that contains Jan 4th is the first week of the year.
    }

所以我收集到的信息是,如果我在英国,周末就是星期天。但我不清楚的是 U.S. 的默认值在哪里? locale目录下没有en-US.js,好像默认是dow:0

我要确定的是:

  1. 为什么没有 en-US?
  2. 我最好的解决方案是将 en-gb.js 复制为 en-US.js 吗?如果我这样做并将其包含在我的应用程序中,这会影响其他地区的其他人吗?

我确实在 moment.min.js 中进行了修补,并将道琼斯指数从 0 更改为 1,这导致整个应用程序的星期日成为周末。但这不是我想做的事情。

希望这不仅仅是我在某处遗漏了答案。

欢迎提出任何建议。

谢谢。

更新 1

使用:

此刻的星期系统不是最容易理解的东西。也就是说,默认的 'en' 在某种程度上被理解为与 'en-us' 相同。如果要将星期几更新为星期日,可以使用区域设置自定义。确保您使用的是 2.12 或更高版本,因为那是引入 updateLocale 功能的时候。然后简单地 运行:

moment.updateLocale('en',  {week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}});

这导致:

moment().endOf('week').format()
"2016-07-03T23:59:59-05:00"

如果您使用的是 2.8 到 2.11,语法很简单:

moment.locale('en',  {week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}});

所以,差别不大,但有点模棱两可。