new Date()在javascript中的日期时间字符串中返回前一天

时间:2014-09-29 13:33:57

标签: javascript angularjs datetime datetime-format

我有一个现有的日期时间字符串

new Date('2014-08-01T00:00:00')

但不是返回2014-08-01,而是在实际的angularJS视图中返回2014-07-31。

我想知道这个日期时间字符串是否有效,如果没有,为什么它无效。

T可能是字符串返回错误日期的原因吗?

console.log返回Thu Jul 31 2014 20:00:00 GMT-0400 (EDT)

的日期

谢谢

让我们称那些-2是有毒的投票。他们应该回想起他们正在努力理解现在对他们有所了解的基本概念的日子。很遗憾。

2 个答案:

答案 0 :(得分:4)

目前(2014年秋季),JavaScript的日期/时间格式与ISO-8601的区别非常重要:如果字符串上没有时区指示符,则假定为Z(“Zulu”,GMT)。

所以

new Date('2014-08-01T00:00:00')

...是格林威治标准时间8月1日午夜。如果您居住在格林尼治标准时间以东,那将是您当地时间的第31天。

然而,这与ISO-8601的不兼容性已在ES6中得到修复,而某些实施(包括Chrome中的最新V8)已经在更新它。 ES6规范将默认值更改为本地时间;查看draft PDFsthis unofficial HTML version中的§20.3.1.15(“日期时间字符串格式”,部分编号可能会更改)。

答案 1 :(得分:3)

显示的日期使用浏览器/计算机的时区。这意味着,如果您使用GMT-1并输入2014-08-01T00:00:00,则实际日期为2014-08-01T00:00:00 - 1 hour = 2014-07-31T23:00:00