javascript - 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 计时器基于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]]]]]);
方法来解决此问题。
这里有一个更好的理解。
推荐阅读
- angular - 从 Angular Material File Select 读取文件
- python - 是否有任何脚本允许在 python 中实时从 USB 麦克风执行 fft?
- java - 插入二叉树
- android - 如何从 m3u8 url 中找出质量并在 exoplayer / videoview android 中设置质量?
- r - 在 R 中复制 SAS glm
- ruby-on-rails - pagy 和 kaminari gems 在性能上到底有什么区别,谁更好?
- javascript - Handlebars - 内联解码上下文并填充模板
- github - 有人可以克隆您的 github 存储库而不计入存储库的访问者吗?
- javascript - 如何在 React-native 中从一个抽屉屏幕切换到非抽屉屏幕?
- java - 基于 SAML 的 SSO 使用带有 JAVA 11 的 Spring Security 失败并出现错误 java.security.KeyStoreException: Uninitialized keystore