我有以下日期,我转换为长格式。这在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
答案 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)
使用库来处理跨多个平台的日期的一致解析。喜欢这个。
答案 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日期详情