【问题标题】:Moment.js get the week number based on a specific day (also past years)Moment.js 根据特定日期(也是过去几年)获取周数
【发布时间】:2014-09-20 21:39:09
【问题描述】:

我如何从 Moment JS 仅从所选日期的格式化对象中获取过去日期的周数?

【问题讨论】:

    标签: javascript momentjs week-number


    【解决方案1】:
      $(document).ready(function(){
        var weeknumber = moment("12-25-1995", "MM-DD-YYYY").week();
        console.log(weeknumber);
      });
    

    根据 momentjs 文档:

    因为不同的语言环境对一年中的星期编号的定义不同, Moment.js 添加了 moment#week 来获取/设置一年中的本地化周。

    一年中的星期几取决于哪一天是第一天 星期(星期日、星期一等),哪一周是第一周 年。

    例如,在美国,星期日是 星期。包含 1 月 1 日的那一周是一年中的第一周。

    因此,如果您在获取正确的周数时遇到问题,请使用 .isoWeek()

    $(document).ready(function(){
      var weeknumber = moment("11-26-2016", "MMDDYYYY").isoWeek();
      alert(weeknumber);
    });
    

    Example

    【讨论】:

    • 注意这一点,因为 moment("12/31/2015", "MM/DD/YYYY").week() 将返回 1 作为周。您可能还想查看 moment().isoWeek()
    • 对于 2016 年 11 月 29 日,返回 47 作为一周。但真实的是 48 岁。
    • 答案改进@mathewsun
    • 明确一点,如果您使用上面给出的任何解决方案moment().format('w')moment().week()moment().isoWeek() 等),您应该知道他们会给你确切的周数。例如,日期moment('2018-12-31').format('w') 将返回1,因为是 2019 年第一周的星期一。是 2018 年的最后一天,但不是 2018 年的一周。
    【解决方案2】:

    你也可以使用format()

    示例:

    moment().format('w') // as .week() like '1'
    moment().format('W') // as .isoWeek() like '1'
    moment().format('ww') // as .week() (2 digits) like '01'
    moment().format('WW') // as .isoWeek() (2 digits) like '01'
    

    ISO 周日期:https://en.wikipedia.org/wiki/ISO_week_date

    更多信息: https://momentjs.com/docs/#week-year-week-and-weekday-tokens

    【讨论】:

    • AND ALSO GGGGGG 给出对应于该周的 iso 年份
    • 示例:请注意,今天 (Monday 12/30/19) 实际上是 2020 年 ISO 第 1 周的一部分,因此如果您使用 WW yyyy 而不是 WW GGGG,您将得到 1 2019 而不是 @ 987654331@
    • 可以与标准 ISO 格式一起使用周年:moment("12-25-1995", "MM-DD-YYYY").format("GGGG-[W]WW-E")
    【解决方案3】:

    获取当前日期的周数

    moment(moment().toDate(), "MM-DD-YYYY").isoWeek()
    

    【讨论】:

    • moment().toDate() 返回一个 Date 对象,就像 new Date() 一样。当 Date 实例传递给 moment 时,格式字符串将被忽略(因为它无关紧要)。 moment(new Date())moment() 相同,所以上面的应该只是moment().isoWeek()。 ;-)
    【解决方案4】:

    这与问题无关,但如果你想得到 1 代表星期一,2 代表星期二,等等 moment().format("d")

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多