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

时间:2016-02-03 05:32:58

标签: javascript datetime

Mozilla浏览器我试过用JavaScript中的strtotime来获取我的时间戳

我的代码:

//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

5 个答案:

答案 0 :(得分:4)

不要使用Date构造函数或Date.parse解析字符串(它们执行相同的操作),它非常不可靠,特别是对于非标准字符串(以及某些字符串)。解析" 2011-01-26 13:51:50"作为当地时间,使用库或简单的函数,如:



function parseDateTime(s) {
  var b = s.split(/\D/);
  return new Date(b[0],b[1]-1,b[2],b[3],b[4],b[5])
}

document.write(parseDateTime("2011-01-26 13:51:50") / 1000);




要包含验证,对缺失值的支持会在另一行上添加更多代码。

答案 1 :(得分:0)

尝试将其用于所有浏览器

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

答案 2 :(得分:0)

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

它将在mozila中运行 你不需要进行任何计算 它会自动转换为毫秒。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

这将起作用

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

,因为

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

parse()方法采用日期字符串(such as "Dec 25, 1995")并返回自January 1, 1970, 00:00:00 UTC.以来的毫秒数