Moment.js周数与MySQL不同

时间:2016-04-25 23:50:44

标签: javascript mysql date momentjs iso8601

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

来自wikipedia page for ISO 8601,它表示第一周是(以及其他等效定义):第一周,其中有大部分时间(四个或更多)在起始年份。

WEEK(date, 3)表示201616给出一周(1-53),周一为第一周的第一天,今年为4天或更多天。

据我所知,这些都是一周的等效定义,但它们没有网格化。

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

提供了Mon Apr 11 2016

在浏览器中使用Moment.js(v2.10.3)为moment().year(2016).week(16).startOf("isoweek")

提供了λ bower install bower angular-sails#* not-cached https://github.com/kyjan/angular-sails.git#* bower angular-sails#* resolve https://github.com/kyjan/angular-sails.git#* bower angular-mocks#~1.5.0 not-cached https://github.com/angular/bower-angular-mocks.git#~1.5.0 bower angular-mocks#~1.5.0 resolve https://github.com/angular/bower-angular-mocks.git#~1.5.0 bower angular-scenario#~1.5.0 not-cached https://github.com/angular/bower-angular-scenario.git#~1.5.0 bower angular-scenario#~1.5.0 resolve https://github.com/angular/bower-angular-scenario.git#~1.5.0 bower angular-sails#* ECMDERR Failed to execute "git ls-remote --tags --heads https://github.com/kyjan/angular-sails.git", exit code of #128

这些不是同一周,我无法弄清楚原因。

1 个答案:

答案 0 :(得分:3)

当您致电[0][0] = pei [0][1] = 2 [1][0] = isaac [1][1] = 4 [2][0] = luis [2][1] = 2 [3][0] = isaac [3][1] = 6 [4][0] = luis [4][1] = 8 时,您正在设置“区域设置”周(我不知道moment.js是如何工作的),但可能第一天将是星期日。当您再调用.week()时,您将获得该周的ISO开始,即上周一。

如果要使用ISO,则必须使用ISO方法,因此:

.startOf('isoweek')

为2016-04-18T00:00:00

创建一个时刻对象

或使用字符串:

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

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