在我的 Java Script 应用程序中,日期以如下格式存储:
2011-09-24
现在,当我尝试使用上面的值来创建一个新的 Date 对象(这样我可以以不同的格式检索日期)时,日期总是会在一天之内返回。见下文:
var date = new Date("2011-09-24");
console.log(date);
日志:
Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
原文由 levi 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,东部夏令时间是
-4 hours
,而您返回之日的小时数是20
。这是2011-09-24的午夜。日期以 UTC (GMT) 解析,因为您提供了仅日期字符串,没有任何时区指示符。如果您给出了一个不带指示符的日期/时间字符串(
new Date("2011-09-24T00:00:00")
),它将在您的本地时区中解析。 (从历史上看,那里一直存在不一致,尤其是因为规范更改了不止一次,但现代浏览器应该没问题;或者您总是可以包含时区指示器。)你得到了正确的日期,你只是没有指定正确的时区。
如果您需要访问日期值,可以使用
getUTCDate()
或 任何其他getUTC*()
函数: