gpt4 book ai didi

Javascript getFullYear() Date 方法奇怪的行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:45 25 4
gpt4 key购买 nike

谁能解释为什么 getFullYear 不返回 2014?

console.log(new Date('2014-01-01').getFullYear()) //2013
console.log(new Date('2014-01-01').getUTCFullYear()) //2014

最佳答案

来自 MDN :

The dateString of "March 7, 2014" returns a different date than "2014-03-07" unless the local time-zone is UTC. When converting a dateString of "March 7, 2014" the local time-zone is assumed. When converting a dateString of "2014-03-07" the UTC time-zone is assumed. This results in two different Date values depending on the format of the string that is being converted.

因此,当您要求它解析“2014-01-01”时,您得到的是 UTC 时间。

然后您在使用本地时间的对象上调用 .getFullYear()。如果您像我一样住在美国东部,那么它基本上会从内部时间中减去 4 小时并返回年份。

下面是发生的事情:

  1. “2014-01-01”转换为“1388534400000”
  2. .getFullYear() 被调用并将“1388534400000”转换为本地时间
  3. 本地时间类似于“1388534160000”
  4. “1388534160000”还没有过年,所以还是2013年

所有这些都意味着如果我们做类似的事情

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

关于Javascript getFullYear() Date 方法奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069004/

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