将日期转换为长格式时出现javascript错误

时间:2013-08-23 09:41:11

标签: javascript datetime

我有以下日期,我转换为长格式。这在chrome中运行良好,但是当我使用firefox时出现错误。日期对象表示无效日期。如果下面的代码在chrome上正常工作有什么问题?

startdate= "2013-08-23 14:59"
alert(startdate);
startdate = new Date(startdate);
alert(startdate);     //Invalid date
startdate = startdate.getTime();
alert(startdate);     //NAN

http://jsfiddle.net/hulk_hulk/kvtW3/

5 个答案:

答案 0 :(得分:2)

The ECMAScript Language Specification描述了Date构造函数内部使用Date.parse,它接受​​Date Time String Format,这是ISO 8601扩展格式的简化。

"2013-08-23 14:59"与该格式不匹配,因此Firefox无法解析。但是某些实现可以解析其他格式,例如Chrome。

考虑使用JavaScript date parser/formatter library来实现浏览器兼容性。您可以轻松地从SO / Google中找到数百万个图书馆。

来自规范

15.9.3.2新日期(价值):

  

如果Type(v)是String,则将v解析为日期,完全相同   解析方法的方式(15.9.4.2);设V为时间值   这个日期。

15.9.4.2 Date.parse(string):

  

该函数首先尝试解析String的格式   根据日期时间字符串格式中调出的规则   (15.9.1.15)。如果String不符合那种格式的话   函数可以回退到任何特定于实现的启发式或   特定于实现的日期格式。

15。9。15。15日期时间字符串格式:

  

ECMAScript定义了基于日期时间的字符串交换格式   简化了ISO 8601扩展格式。格式是   如下:YYYY-MM-DDTHH:mm:ss.sssZ

答案 1 :(得分:2)

试试这个..

startdate="2013-08-23 14:59:00"
var a=startdate.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
startdate= new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);
alert(startdate);     //correct date
startdate = startdate.getTime();
alert(startdate);

希望很有用,适用于IE FF Chrome等。

答案 2 :(得分:1)

使用库来处理跨多个平台的日期的一致解析。喜欢这个。

https://code.google.com/p/datejs/

答案 3 :(得分:0)

Firefox想要新的Date(),尝试这样:

    startdate= "2013-08-23 14:59"
    alert(startdate);

    startdate = new Date(2013,08,23,14,59,00,00);

    alert(startdate);     //Invalid date
    startdate = startdate.getTime();
    alert(startdate);     //NAN

答案 4 :(得分:0)

  

Javascript日期支持多种格式尝试其中任何一种.. !!

将代码更改为此可能会有帮助

startdate= "23 09 2013, 14:59:00"
alert(startdate);
startdate = new Date(startdate);
alert(startdate);     //Invalid date
startdate = startdate.getTime();
alert(startdate);  

您还可以使用以下格式设置值 尝试任何这种格式

date1 = new Date("25 Dec, 1995 23:15:00")
date2 = new Date("2009 06 12,12:52:39")
date3 = new Date("20 09 2006,12:52:39")

查看here了解JavaScript日期详情