JavaScript .getDate() : getting 31 instead of 1

标签 javascript

当我创建以下日期变量时:

    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/

相关文章:

javascript - JS中的正则表达式查找每个单词的第一个字符并转换为大写

javascript - 将滚动区域的顶部与 CSS 固定的重叠元素分开

Javascript 表单提交创建大量 POST 请求(多次提交)

javascript - 是否无法使用arguments 属性设置尚未提供的参数

javascript - 实现 removeProperty 函数

javascript - 为什么我们应该将 JavaScript 代码放入 IIFE 中?

javascript - 用于引用对象实例的 React.js 模式

javascript - 创建计时器/秒表并在动画后启动

javascript - React Native 中的导航问题 - 正确组织

javascript - Angular 5 Typescript 表示 webpack 失败,因为响应类型上不存在属性数据