在瞬间js中计算周数不正确

Incorrect weeks calculation in momentjs

本文关键字:周数 不正确 计算 瞬间 js      更新时间:2023-09-26

我使用节点.js,时刻2.9.0

var moment = require("moment");
var d = moment.utc([2014, 11, 27]);
var iso = d.toISOString();
var week = d.week();

显示 iso = "2014-12-27T00:00:00.000Z"周是52。

但如果var d = moment.utc([2014, 11, 28]);

iso 是 2014-12-28T00:00:00.000Z

周为 1。为什么?

谢谢。

答案可以在文档中找到:

一年中的一周因哪一天是 一周(星期日、星期一等),哪一周是一年的第一周。

例如,在美国,星期日是一周的第一天。 以 1 月 1 日为首的一周是一年的第一周。

因此,2015 年的第 #1 周(通过此函数)是:

  • 2014-12-28 (星期日)
  • 2014-12-29 (星期一)
  • 2014-12-30 (星期二)
  • 2014-12-31 (星期三)
  • 2015-01-01 (星期四)
  • 2015-01-02 (星期五)
  • 2015-01-03 (星期六)

值得一提的是,时刻还具有isoWeek功能,符合ISO 8601周编号系统。

我也有这个问题,不是week()有帮助,而是isoWeek()

对我来说,我得到这样的周数

moment('2022-12-26', 'YYYY-MM-DD').isoWeek() // return 52

moment('2022-12-26', 'YYYY-MM-DD').week() // return 53