Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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在Firefox中不起作用?_Javascript_Date - Fatal编程技术网

为什么这个Javascript在Firefox中不起作用?

为什么这个Javascript在Firefox中不起作用?,javascript,date,Javascript,Date,我试图用一些简单的Javascript来操纵一个日期。代码如下: var newDate = new Date("2013-07-23" + " 12:00:00"); console.log(newDate.toString()); newDate = new Date(newDate.getTime() - (24 * 60 * 60 * 1000)); console.log(newDate.toString()); var date = newDate.getFullYear() + "

我试图用一些简单的Javascript来操纵一个日期。代码如下:

var newDate = new Date("2013-07-23" + " 12:00:00");
console.log(newDate.toString());
newDate = new Date(newDate.getTime() - (24 * 60 * 60 * 1000));
console.log(newDate.toString());
var date = newDate.getFullYear() + "-" + ("0" + (newDate.getMonth() + 1)).slice(-2) + "-" + ("0" + newDate.getDate()).slice(-2);
console.log(date);
本质上,我正在转变

2013-07-23 -> Jul 22 2013 12:00:00 GMT+1000 -> 2013-07-22
它在Chrome中运行良好,您可以通过它来测试代码。它总是回来

"Invalid Date"
"Invalid Date"
"NaN-aN-aN"
对于Firefox中的三个
控制台.log
,但是:

Tue Jul 23 2013 12:00:00 GMT+1000 (E. Australia Standard Time)
Mon Jul 22 2013 12:00:00 GMT+1000 (E. Australia Standard Time) 
2013-07-22

对于Chrome。

您的日期格式应该是“符合IETF的RFC 2822时间戳”,如果不是,则存在一些跨浏览器的不一致性

请在此处阅读:


但基本上-您只需将“
-
”替换为“
/
”,即可使其在任何现有浏览器上工作。

规范不要求解析日期格式
YYYY-MM-DD HH:MM:SS

新日期

以与Parse方法完全相同的方式将v解析为日期

(本质上,与
Date.parse(…)
的结果相同)

Date.parse

函数首先尝试根据日期时间字符串格式(15.9.1.15)中调用的规则解析字符串的格式。如果字符串不符合该格式,函数可能会退回到任何特定于实现的启发式或特定于实现的日期格式。无法识别的字符串或格式字符串中包含非法元素值的日期将导致Date.parse返回NaN

日期时间字符串格式:

格式如下:YYYY-MM-DDTHH:MM:ss.sssZ

不保证任何其他格式有效,包括
YYYY-MM-DD HH:MM:SS

始终可以构造一致的日期字符串:

var newDate = new Date("2013-07-23" + "T12:00:00.000Z");
console.log(newDate.toString());
newDate = new Date(newDate.getTime() - (24 * 60 * 60 * 1000));
console.log(newDate.toString());
var date = newDate.getFullYear() + "-" + ("0" + (newDate.getMonth() + 1)).slice(-2) + "-" + ("0" + newDate.getDate()).slice(-2);
console.log(date);
在Firefox中:

new Date("2013-07-23 12:00:00").toString()   // Invalid
new Date("2013-07-23T12:00:00").toString()   // Local noon
new Date("2013-07-23T12:00:00Z").toString()  // UTC noon
new Date("2013/07/23 12:00:00").toString()   // Local noon
镀铬:

new Date("2013-07-23 12:00:00").toString()   // Local noon
new Date("2013-07-23T12:00:00").toString()   // UTC noon
new Date("2013-07-23T12:00:00Z").toString()  // UTC noon
new Date("2013/07/23 12:00:00").toString()   // Local noon
还有许多其他不一致之处。例如,Chrome本身甚至不一致:

new Date("2013-07-23 00:00:00").toString()   // Local midnight
new Date("2013-07-23").toString()            // UTC midnight
如果需要以一致的方式解析字符串中的日期,则应该考虑使用诸如.< /p>这样的库。 主要的优点是,您可以控制输入和输出格式,并且在所有浏览器中的工作方式都是相同的

moment("2013-07-23 12:00:00", "YYYY-MM-DD HH:mm:ss").format()     // Local noon
moment.utc("2013-07-23 12:00:00", "YYYY-MM-DD HH:mm:ss").format() // UTC noon