首页 > 解决方案 > Javascript .getDate() : getting 31 instead of 1

问题描述

When I create the following date variable:

    var d = new Date('2018-01-01')

and run

    d.getDate()

I get 31. when I run

d.getMonth()

I get 11.

Why do I get 31 and 11 rather than 1 and 1?

标签: javascript

解决方案


如果你住在西半球,我相信这是一个时区问题。

Javascript 计时器基于Unix 滴答(基本上是 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]]]]]);方法来解决此问题。

这里有一个更好的理解。


推荐阅读