在javascript中,我得到了当前时刻,并添加了3天。为什么在添加3天仍是2018时将年份格式化为2019?
从2天11小时到3天10小时的范围内添加时,此操作将失败。但是,如果超出此范围,则可以正常工作。
protocol Message {
}
struct SentMessage: Message {
}
struct ReceivedMessage: Message {
}
var messages: [Message]
Console.log显示以下内容:
2018-12-28 14:39:38 -07:00
2019-12-31 14:39:38 -07:00
答案 0 :(得分:3)
GGGG
是ISO周的年份,而不是实际的年份:
moment.js: Week year, week, and weekday tokens
GGGG:ISO 4位数字周年
[...]第01周的ISO 8601定义是其中公历年的第一个星期四的一周。 [...]
[...]如果1月1日是星期一,星期二,星期三或星期四,则是在第01周。如果1月1日是星期五,则是上一年的第53周的一部分。如果是星期六,则它是上一年最后一周的一部分,该周的普通年编号为52,a年编号为53。如果在星期日,则它是上一年的第52周的一部分。 [...]
[...]如果12月31日是星期一,星期二或星期三,则在第二年的第01周。如果是星期四,则是在该年的第53周刚刚结束;如果在星期五是第52周(如果刚结束的年份是is年则是53);如果是在周六或周日,则是在该年度的第52周刚刚结束。 [...]
因此,一年的最后几天可以属于明年的第一个ISO周。
您正在寻找YYYY
var targ = moment();
console.log(targ.format('YYYY-MM-DD HH:mm:ss Z'));
targ.add(3, 'days');
console.log(targ.format('YYYY-MM-DD HH:mm:ss Z'));