gpt4 book ai didi

javascript - 为什么javascript设置的月份会错误?

转载 作者:行者123 更新时间:2023-11-28 12:14:40 24 4
gpt4 key购买 nike

我在设置月份时发现的

  1. 今天是 08-31
  2. 如果我增加月份,那么今天将是 09-30
  3. 但它返回 10-01
  4. 如果我减少月份,则返回 09-01

date = new Date()
console.log( date )
// Fri Aug 31 2018 11: 28: 47 GMT + 0900(한국 표준시)

console.log( date.getMonth() )
// 7

console.log( date.setMonth(date.getMonth() + 1) )
// 1538360927857

console.log( date.toISOString() )
// "2018-10-01T02:28:47.857Z"

console.log( date.setMonth(date.getMonth() - 1) )
//1535768927857

console.log( date.toISOString() )
//"2018-09-01T02:28:47.857Z"

谁能解释一下为什么会发生这种情况?

最佳答案

当当前日期为 08-31 时,不完全清楚将月份设置为 9 意味着什么,因为 09-31 code> 是无效日期。这就是为什么有时必须有人定义 setMonth 在这种情况下应该做什么。定义的行为似乎与您期望的不同(您期望日期变为 09-30)。

MDN (对于setMonth)有一些关于此的信息:

The current day of month will have an impact on the behaviour of this method. Conceptually it will add the number of days given by the current day of the month to the 1st day of the new month specified as the parameter, to return the new date.

它也指actual specification它给出了用于计算结果的精确算法。制定现在的规范的原因是多方面的,通常算法的简单性以及非边缘情况下的行为是重要因素。

关于javascript - 为什么javascript设置的月份会错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52107717/

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