Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
Javascript Chrome浏览器格式日期和时间为零时删除T和时间其他答案不起作用_Javascript_Jquery_Google Chrome_Datetime - Fatal编程技术网

Javascript Chrome浏览器格式日期和时间为零时删除T和时间其他答案不起作用

Javascript Chrome浏览器格式日期和时间为零时删除T和时间其他答案不起作用,javascript,jquery,google-chrome,datetime,Javascript,Jquery,Google Chrome,Datetime,Chrome浏览器显示错误的日期,而Firefox显示正确的日期 我使用的代码,人们已经投票多次 F12,在Chrome和Firefox中运行这个提琴,我只关心Chrome 没有时间,结果无法工作,显示的是10/27/15,而不是正确的10/28/15 var dateString2 = "2015-10-28T00:00:00"; 代码(也用小提琴) 这实际上是由于最近Chrome在正确支持ES6规范方面的一些变化。参见铬问题和,以及 基本上发生的情况是: ES5用于指定不带偏移量的IS

Chrome浏览器显示错误的日期,而Firefox显示正确的日期

我使用的代码,人们已经投票多次

F12,在Chrome和Firefox中运行这个提琴,我只关心Chrome

没有时间,结果无法工作,显示的是10/27/15,而不是正确的10/28/15

var dateString2 = "2015-10-28T00:00:00";
代码(也用小提琴)


这实际上是由于最近Chrome在正确支持ES6规范方面的一些变化。参见铬问题和,以及

基本上发生的情况是:

  • ES5用于指定不带偏移量的ISO格式的字符串被视为UTC,但没有任何实现支持这一点,因为根据ISO8601,它应该默认为本地字符串,而不是UTC。所以,这在ES6中是固定的

  • Chrome实现了这一更改,因为以前仅日期值被解释为UTC,而日期+时间值被解释为本地时间

  • Chrome决定恢复更改并恢复旧的行为。就我个人而言,我认为这是一个错误——但其他人不同意

  • 当他们恢复更改时,他们无意中将仅日期值和日期+时间值切换回UTC默认值,而不仅仅是仅日期值。现在,您的日期+时间值将以UTC而不是本地时间进行解释

要强制将其解释为本地时间,需要替换一些字符串。这应该起作用:

var s1 = "2015-10-28T00:00:00";
var s2 = s1.replace(/-/g,'/').replace('T',' '); // "2015/10/28 00:00:00"
var d = new Date(s2); // now will parse as local in all browsers

哇,很好的解释
var dateString2 = "2015-10-28T00:00:00";
var date2 = new Date(dateString2);
var formattedDateString2 = (date2.getMonth() + 1) + "/" + date2.getDate() + "/" + date2.getFullYear().toString().substr(2, 2);
console.log(formattedDateString2);
var s1 = "2015-10-28T00:00:00";
var s2 = s1.replace(/-/g,'/').replace('T',' '); // "2015/10/28 00:00:00"
var d = new Date(s2); // now will parse as local in all browsers