moment.js 认为 2013-12-31 是第 1 周,而不是第 53 周

Mar*_*ark 10 javascript momentjs

moment.js 库很棒,我几乎一直在使用它,但最近我遇到了一些有趣的事情。我正在尝试按一年中的一周绘制数据,其中一个数据点是 2013-12-31,moment.js 告诉我这是第 1 周吗?有没有更好的方法来处理这个问题?无论是 53、null、-1 还是其他?

moment('2013-12-31').week()
(returns) 1
Run Code Online (Sandbox Code Playgroud)

我想也许使用 isoWeek 或 format 可以解决这个问题,但它们都返回相同的值 1,尽管文档说它是 53。

moment('2013-12-31').isoWeek()
(returns) 1
+moment('2013-12-31').format('w')
(returns) 1   
Run Code Online (Sandbox Code Playgroud)

有人对此有任何想法吗?(没有测试计算的周是否有一个最小/最大日期覆盖我通过它的日期值)

Adl*_*ane 5

这是因为从 2013 年 12 月 30 日开始的一周被认为是 2014 年的第一周,正如您在此页面上看到的纪元转换器

根据 momentjs文档

1 月 1 日所在的那一周是一年的第一周。

  • 文档解释了 `.week()` 的行为,但 `.isoWeek()` 支持 53 周年。例如,即使该周包含 1 月 1 日,“moment('2004-12-31').isoWeek()”也会返回“53”。 (2认同)