我使用moment的isoWeek函数从日期中获取了iso周。
时刻(新日期(2015,11,28))。isoWeek()//输出53
我使用moment的isoWeekYear函数从同一天开始获取iso周年。
时刻(新日期(2015,11,28))。isoWeekYear()//输出2015
但是当我将相同的输出提供给力矩函数的输入时,会产生不同的日期。
moment()。isoWeek(53).isoWeekYear(2015).isoWeekday(0).toDate()//输出2014年12月28日
对于其他日期,它正常工作。我的代码中是否有任何遗漏,或者是Moment的错误?
这是一个演示JSFiddle console.log("Iso Week :",moment(new Date(2015,11,28)).isoWeek());
console.log("Iso Year :",moment(new Date(2015,11,28)).isoWeekYear());
console.log("Date :", moment().isoWeek(53).isoWeekYear(2015).isoWeekday(0).toDate());
答案 0 :(得分:2)
这可能是您给予细分的订单。 这有效:
moment().isoWeekYear(2015).isoWeekday(1).isoWeek(53).toDate());
从Moment.js文档中查看。
如果你链接多个动作来构建一个日期,你应该开始 从一年,然后一个月,然后一天等。否则你可能会得到 意外的结果,比如当天= 31而当前月只有30 天(同样适用于本机JavaScript日期操作), 返回日期将是下个月的第1天。
isoWeekDays也是1到7.通过设置0,你将在下周的星期一到来。
答案 1 :(得分:0)
首先你必须了解一件事。在你的第一次操作中,这里发生的是,
moment(new Date(2015,11,28)).isoWeek() //output 53
在使用新的Date()创建日期时,您已经过了11个月。所以会发生什么是创建日期月将增加1.所以日期将是2015-12-28.so周数是53
所以对于第3次操作,你已经传递了相同的结果。所以时刻返回了正确的日期。
在你的情况下,如果你想在第一次操作中通过月减去1。
moment(new Date(2015,10,28)).isoWeek();
现在你会得到正确答案