Momentjs Locale - 美国的星期日配置

时间:2016-06-30 21:09:13

标签: momentjs angular-moment

我正在我正在使用的App中的几个地方使用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.
    }

所以我收集的是如果我在GB,周末将是星期日。但我不清楚的是,美国的默认值在哪里? locale目录中没有en-US.js,它似乎默认为dow:0

我想确定的是:

  1. 有没有理由没有en-US?
  2. 我是将en-gb.js复制为en-US.js的最佳解决方案吗?如果我这样做并将其包含在我的应用程序中,这是否会影响其他语言环境中的其他人?
  3. 我确实修改了moment.min.js并将dow从0更改为1,这导致星期日在整个应用程序中结束。但这不是我想做的事情。

    希望这不仅仅是我错过了某处的答案。

    欢迎任何建议。

    谢谢。

    更新1

    使用:

    • momentjs 2.9.0
    • angular-moment 0.10.3

1 个答案:

答案 0 :(得分:2)

一周的系统并不是最容易理解的。也就是说,默认的'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.
}});

所以,并非完全不同,但有点含糊不清。