当我创建以下日期变量时:
var d = new Date('2018-01-01')
然后运行
d.getDate()
当我运行时,我得到 31
d.getMonth()
我得到 11。
为什么我得到的是 31 和 11,而不是 1 和 1?
最佳答案
如果您住在西半球,我相信这是一个时区问题。
Javascript计时器基于Unix ticks (基本上是自 1970 年 1 月 1 日以来的秒数)。 由于使用 ISO 8601 的纯日期格式字符串被视为 UTC,Javascript 通过添加您的本地时区来缓解这种情况,从而调整您的时间。
示例:2018-01-01 00:00:00 - 您的时区 = 2017-12-31 {您的时区偏移量}。
您可以通过将时区移至负 UTC 来重新创建此问题,尝试使用 new Date('string')
创建日期方法,然后获取日期。
您可以使用 new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
来修复此问题方法代替。
Here's更好地理解它。
关于JavaScript .getDate() : getting 31 instead of 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546168/