有人能解释一下为什么getFullYear没有返回2014吗?
console.log(new Date('2014-01-01').getFullYear()) //2013
console.log(new Date('2014-01-01').getUTCFullYear()) //2014
有人能解释一下为什么getFullYear没有返回2014吗?
console.log(new Date('2014-01-01').getFullYear()) //2013
console.log(new Date('2014-01-01').getUTCFullYear()) //2014
来自MDN:
“March 7, 2014” 的 dateString 返回的日期与 “2014-03-07” 不同,除非本地时区是 UTC。当转换“March 7, 2014”的dateString时,假定为本地时区。当转换“2014-03-07”的dateString时,则假定为UTC时区。这会导致根据要转换的字符串格式而异的两个不同的Date值。
因此,当您要解析“2014-01-01”时,您会得到UTC时间。
然后您调用对象的 .getFullYear()
,它使用本地时间。如果您像我一样住在美国东部,它基本上会从内部时间中减去4小时并返回年份。
所以这里发生了什么:
.getFullYear()
,将 "1388534400000" 转换为本地时间所有这些都意味着,如果我们做如下操作
console.log(new Date('January 1, 2014').getUTCFullYear()); // 2014
console.log(new Date('January 1, 2014').getFullYear()); // 2014
console.log(new Date('January 1, 2014').getUTCHours()); // 5
console.log(new Date('January 1, 2014').getHours()); // 0
console.log(new Date('2014-01-01 ').getFullYear())
将得到 2014
。 - PM 77-1