【问题标题】:Getting what is the first day of the week based on Locale with momentJs使用momentJs根据Locale获取一周的第一天
【发布时间】:2014-10-30 16:22:41
【问题描述】:

使用momentJs,是否可以根据Locale获取一周的第一天(星期一(1),星期日(7)...)而不创建新的时刻?

我知道我可以通过以下方式访问当前语言环境的一周的第一天:

moment.locale('uk');
moment().startOf('week').isoWeekday(); //Returns 1
moment.locale('en');
moment().startOf('week').isoWeekday(); //Returns 7

不过我觉得有点丑……

  1. 创建 momentjs 对象。
  2. 前往一周的第一个日期。
  3. 解决工作日。

有更好的主意吗? 谢谢!

【问题讨论】:

  • 请检查moment.js的版本。

标签: javascript momentjs


【解决方案1】:

这个问题在momentjs当前的API中有正确答案:

moment.localeData('en-us').firstDayOfWeek();

正如 OP 所要求的 - 不需要 moment() 的实例,也没有“开始”的丑陋,只需简单地使用他们的 localeData。

请注意,可能需要下载 moment+locale 文件,该文件比仅 moment(约 12kb)大得多(44kb)。

似乎是 2.2.0 版本的情况,更多信息可以在他们的文档中找到: http://momentjs.com/docs/#/i18n/locale-data/

【讨论】:

    【解决方案2】:

    在我看来,您想获得一个区域设置感知周开始 (startOf('week')) 并将其值返回为 isoWeekday,而不是日期或任何内容?在这种情况下,您的问题就是答案。

    moment().startOf('week').isoWeekday();
    

    【讨论】:

    • 请参考我的问题要求:“不创建时刻对象”
    • 哦,对不起,我明白了。 Afaik 时刻应该是这样工作的,我不觉得它难看......从哪里需要?
    【解决方案3】:

    看起来你可以从 2.1.0 版本开始执行 moment().locale('us').weekday(0) http://momentjs.com/docs/#/get-set/weekday/

    【讨论】:

    • 当我说“第一天”时,我的意思是星期一 (1)/星期日 (7),而不是日期。返回的时刻是一周的第一天。基本上和做 moment().locale('us').startOf('week') 一样
    • 这解决了这个问题,因为每种语言都有一周的第一天,在美国那一天是星期日,而在欧洲是星期一。使用该函数,您可以在作为参数传递的语言环境中获得一周的第一天
    猜你喜欢
    • 2012-11-22
    • 2014-09-25
    • 2017-12-29
    • 2021-07-21
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2015-12-16
    相关资源
    最近更新 更多