Mozilla浏览器中的JavaScript Date.parse返回NaN

Mozilla浏览器中的JavaScript Date.parse返回NaN,javascript,datetime,Javascript,Datetime,Mozilla浏览器我试过用JavaScript获取时间戳,比如php中的strotime 我的代码: //var start_date = data.result[0].start_date; var start_date = "2011-01-26 13:51:50"; var d = Date.parse(start_date) / 1000; console.log(d); // 1296030110 以上代码在chrome中运行良好。但不能在Mozilla浏览器中工作。我得到了NaN

Mozilla浏览器我试过用JavaScript获取时间戳,比如php中的
strotime

我的代码:

//var start_date = data.result[0].start_date;
var start_date = "2011-01-26 13:51:50";
var d = Date.parse(start_date) / 1000;
console.log(d);
// 1296030110
以上代码在chrome中运行良好。但不能在Mozilla浏览器中工作。我得到了
NaN
值。请帮帮我

在谷歌搜索之后,我找到了一个在日期和时间之间添加
T
的解决方案。所以我补充说。我正在获取输出,但两个浏览器中的输出不相同

var start_date = "2011-01-26T13:51:50";
var d = Date.parse(start_date) / 1000;
console.log(d);
//Mozilla = 1296030110
//Chrome  =  1296044910

试试这个,它适用于所有浏览器

start_date="2011-01-26 13:51:50".replace(" ","T");
start_date = new Date(start_date);
var d = start_date.getTime() / 1000;

试试这个,它适用于所有浏览器

start_date="2011-01-26 13:51:50".replace(" ","T");
start_date = new Date(start_date);
var d = start_date.getTime() / 1000;
它将在mozila运行 您不需要执行任何计算 它会自动转换为毫秒

它将在mozila运行 您不需要执行任何计算
它会自动转换为毫秒

试试这个。我不确定这个结果是否完美

var start_date = Date("2011-01-26 13:51:50");
var d = Date.parse(start_date) / 1000;
console.log(d);
//1454478429

试试这个。我不确定这个结果是否完美

var start_date = Date("2011-01-26 13:51:50");
var d = Date.parse(start_date) / 1000;
console.log(d);
//1454478429
这会奏效的

    var start_date = "Jan 26,2011 13:51:50 ";
    var d = Date.parse(start_date)/1000;
    console.log(d);
因为

Date.parse()
方法解析日期的字符串表示形式,并返回自1970年1月1日、UTC 00:00:00或NaN以来的毫秒数(如果字符串无法识别或包含非法日期值
(例如2015-02-31)

parse()方法接受一个日期字符串
(例如“Dec 25,1995”)
,并返回自
1970年1月1日00:00:00 UTC以来的毫秒数。
这将起作用

    var start_date = "Jan 26,2011 13:51:50 ";
    var d = Date.parse(start_date)/1000;
    console.log(d);
因为

Date.parse()
方法解析日期的字符串表示形式,并返回自1970年1月1日、UTC 00:00:00或NaN以来的毫秒数(如果字符串无法识别或包含非法日期值
(例如2015-02-31)


parse()方法接受日期字符串
(例如“Dec 25,1995”)
,并返回自
1970年1月1日00:00:00 UTC以来的毫秒数。

不要用日期构造函数或date.parse解析字符串(它们做同样的事情),这是非常不可靠的,特别是对于非标准字符串(以及一些非标准字符串). 要将“2011-01-26 13:51:50”解析为本地时间,请使用库或以下简单函数:

函数parseDateTime(s){
var b=s.split(/\D/);
返回新日期(b[0],b[1]-1,b[2],b[3],b[4],b[5])
}

文件编写(parseDateTime(“2011-01-26 13:51:50”)/1000)不使用日期构造函数或Date.parse解析字符串(它们做相同的事情),这是非常不可靠的,特别是对于非标准字符串(以及一些非标准字符串)。要将“2011-01-26 13:51:50”解析为本地时间,请使用库或以下简单函数:

函数parseDateTime(s){
var b=s.split(/\D/);
返回新日期(b[0],b[1]-1,b[2],b[3],b[4],b[5])
}

文件编写(parseDateTime(“2011-01-26 13:51:50”)/1000)也在时间之后添加一个时区符号,那么它将持续工作。必须再次说明:不要用日期构造函数解析字符串。OP中的格式不是ECMAScript 2015可以识别的格式(并非所有正在使用的浏览器都支持该格式),因此其处理方式完全取决于实现(包括作为无效日期)。始终手动解析字符串,或者编写自己的两行函数,或者使用库。同时在时间之后添加一个时区符号,那么它将持续工作。必须再次说明:不要使用日期构造函数解析字符串。OP中的格式不是ECMAScript 2015可以识别的格式(并非所有正在使用的浏览器都支持该格式),因此其处理方式完全取决于实现(包括作为无效日期)。始终手动解析字符串,或者编写自己的两行函数,或者使用库。不在Mozilla浏览器中工作。你在Mozilla中试过吗?检查你希望如何解析它?ISO 8601规定将其视为本地,但ECMASCript 2015将被解释为将其视为UTC。不在Mozilla浏览器中工作。你在Mozilla中试过吗?检查你希望如何解析它?ISO 8601规定将其视为本地,但ECMASCript 2015将被解释为将其视为UTC。ECMASCript 2015允许实现以任何方式处理不符合ISO 8601的字符串(包括无效日期)。它在处理仅日期表单的方式上也与ISO 8601不同,因此,仅因为您测试的少数实现按预期解析了字符串,并不意味着它们都会解析。ECMAScript 2015允许实现以任何方式处理不符合ISO 8601的字符串(包括无效日期)。它在处理仅日期表单的方式上也与ISO 8601不同,因此,仅仅因为您测试的少数实现按预期解析了字符串,并不意味着它们都会。