gpt4 book ai didi

javascript - Moment.js 周数与 MySQL 不同

转载 作者:行者123 更新时间:2023-11-29 05:13:04 25 4
gpt4 key购买 nike

来自docs for Moment.js ,它表示 moment().startOf('isoWeek') 根据 ISO 8601 设置为一周的第一天。

来自wikipedia page for ISO 8601 ,它说第一周是(在其他等效定义中):第一周的大部分(四天或更多)天数在起始年。

来自docs for MySQL ,它说 WEEK(date, 3) 给出一个星期 (1-53),星期一是今年第一周的第一天,有 4 天或更多天。

据我所知,这些都是一周的等价定义,但它们并不相吻合。

我的 MySQL 数据库 (v5.6.17) 为我提供 201616 SELECT YEARWEEK('2016-4-20',3)

在浏览器中使用 Moment.js (v2.10.3) 给我 Mon Apr 11 2016 for moment().year(2016).week(16).startOf("isoweek ")

那些不是同一周,我不明白为什么。

最佳答案

当您调用 .week() 时,您设置的是“语言环境”周(我不知道 moment.js 是如何计算出来的),但第一天可能是星期日。当您随后调用 .startOf('isoweek') 时,您将获得该周的 ISO 开始,即前一个星期一。

如果你想使用 ISO,你必须使用 ISO 方法,所以:

moment().year(2016).isoWeek(16).startOf('isoweek');

为 2016-04-18T00:00:00 创建一个 moment 对象

或者使用字符串:

moment('2016-W16') // 2016-04-18T00:00:00

默认为 ISO 周编号和一周的开始。

关于javascript - Moment.js 周数与 MySQL 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com