【问题标题】:Momentjs Locale - Day of Week Config for USMomentjs 语言环境 - 美国的星期几配置
【发布时间】:2016-06-30 21:09:13
【问题描述】:

我在我正在开发的应用程序的多个地方使用 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.
    }

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

我要确定的是:

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

我在 moment.min.js 中进行了修改,并将 dow 从 0 更改为 1,这导致星期日成为整个应用程序的一周结束。但这不是我想做的事情。

希望这不仅仅是我在某个地方错过了答案。

欢迎提出任何建议。

谢谢。

更新 1

使用:

  • momentjs 2.9.0
  • 角力矩 0.10.3

【问题讨论】:

  • 您需要使用 2.9 的原因是什么?我可以发布它的代码,但是 2.12+ 的语法更有意义。

标签: momentjs angular-moment


【解决方案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.
}});

所以,没有太大的不同,但有点模棱两可。

【讨论】:

  • 谢谢。这样可行。这会覆盖其他用户的语言环境吗?还是这只是改变了“en”用户的道琼斯指数?
  • 只是在变化
  • 我更新到 2.12 并使用了moment.updateLocale,它可以工作。谢谢。
猜你喜欢
  • 2012-11-07
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2013-03-26
  • 2020-07-10
  • 1970-01-01
  • 2013-10-17
  • 2011-11-11
相关资源
最近更新 更多