Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
new Date()返回javascript中日期时间字符串中日期的前一天_Javascript_Angularjs_Datetime_Datetime Format - Fatal编程技术网

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

new Date()返回javascript中日期时间字符串中日期的前一天,javascript,angularjs,datetime,datetime-format,Javascript,Angularjs,Datetime,Datetime Format,我有一个现有的日期时间字符串 new Date('2014-08-01T00:00:00') 但在实际的angularJS视图中,它返回的不是2014-08-01,而是2014-07-31 我想知道这个日期时间字符串是否有效,如果无效,为什么无效 字符串返回错误日期的原因是否是T console.log返回日期为2014年7月31日星期四20:00:00 GMT-0400(EDT) 多谢各位 让我们称之为-2是有毒的投票否决。他们真的应该回忆起那些日子,那时他们正在努力理解那些现在显而易见的基

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

new Date('2014-08-01T00:00:00')
但在实际的angularJS视图中,它返回的不是2014-08-01,而是2014-07-31

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

字符串返回错误日期的原因是否是
T

console.log返回日期为2014年7月31日星期四20:00:00 GMT-0400(EDT)

多谢各位


让我们称之为-2是有毒的投票否决。他们真的应该回忆起那些日子,那时他们正在努力理解那些现在显而易见的基本概念。很遗憾。

显示的日期使用浏览器/计算机的时区。这意味着,如果您在GMT-1中输入
2014-08-01T00:00:00
,实际日期是
2014-08-01T00:00:00-1小时
=
2014-07-31T23:00:00
目前(2014年秋季),JavaScript的日期/时间格式在一个非常重要的方面与ISO-8601不同:如果字符串上没有时区指示器,它假定为
Z
(“祖鲁”,GMT)

所以

…是格林威治标准时间8月1日午夜。如果你住在格林威治标准时间以东,那将是当地时间的31日


然而,ES6中已经修复了与ISO-8601的不兼容问题,一些实现(包括Chrome中最新的V8)已经在更新它。ES6规范将默认值更改为本地时间;查看or中的§20.3.1.15(“日期-时间字符串格式”,节号可能会更改)。

您的时区可能会干扰返回的结果。返回日期的时间是多少?显示的日期使用浏览器时区。在角度视图中如何使用它?不要使用日期构造函数分析字符串。该格式字符串(即不带时区的ISO 8601)将在大多数现代浏览器中解析为UTC,在Chrome中为本地,在IE 8及更低版本中完全失败。(顺便说一句,那些懒得解释自己行为的下层选民显然是懒惰的)……或者t.J.克劳德所说的。。。他的解释好得多^ ^实际上,我认为你的回答也帮助我展示了一个例子。你们两个是恭维的回答。很难选择哪一个是最好的天哪。。。。但既然克劳德得到了更多的细节,我将投票表决他的。然而,你的答案也很好!投票支持你!我可以知道这个例子中的
T
(介于日期和时间之间)是什么意思吗?@Chen:只是把时间和日期分开
T
代表“时间”。JavaScript是从ISO-8601获得的(尽管JavaScript的格式不是ISO-8601),它使用它来避免字符串中有空格。@T.J.Crowder-根据ES5,这是正确的,但更改与ISO 8601一致,其中没有时区的日期是本地的。Chrome已经实现了。@RobG:哇,我没想到他们会改变这一点。我认为它们是有意分开的,因为它们在野外得到了广泛的应用。但确实如此!我想这只是一个错误,或者说这种不相容性让人们太烦恼了。顺便说一句:谢谢你的链接,我不知道那个非官方的HTML版本,刚刚下载了大量的PDF…:-)
new Date('2014-08-01T00:00:00')