将日期字符串转换为Firefox中的Date对象时出错

时间:2014-02-24 10:02:42

标签: javascript

我正在将一个简单的dateString转换为Date对象。以下代码适用于除Firefox之外的所有浏览器。

var dateString = "02-24-2014 09:22:21 AM";

var dateObject = new Date(dateString);

console.log(dateObject.toDateString());

Firefox中的Firebug控制台说Invalid Date。我在这里做错了什么?

我也尝试用-替换\,但它没有帮助。

是否可以在不使用任何库的情况下执行此操作?

5 个答案:

答案 0 :(得分:54)

看起来Firefox不喜欢-中的dateString

使用正则表达式将所有出现的-替换为/,然后将字符串转换为Date对象。

var str = '02-24-2014 09:22:21 AM';

str = str.replace(/-/g,'/');  // replaces all occurances of "-" with "/"

var dateObject = new Date(str);

alert(dateObject.toDateString());

答案 1 :(得分:4)

尝试:var dateString = "02/24/2014 09:22:21 AM"

dd-mm-yyyy不是EcmaScript中的标准日期格式。有些浏览器实现它,有些则没有。

您尝试用baskslashes替换连字符,但您需要用斜杠替换它们。

如果带有连字符的日期来自您的服务器,或者您可以使用replace方法和正则表达式替换它们:

var dateString = "02-24-2014 09:22:21 AM";
dateString = dateString.replace(/-/g, '/');

答案 2 :(得分:4)

请试试这个:

var dateString =“02-24-2014 09:22:21 AM”;

var dateObject = new Date();

dateObject.toDateString(dateString);

答案 3 :(得分:1)

我建议你使用,

http://momentjs.com/

moment.js jQuery api。它适用于所有浏览器。 有很多方法可以完成同样的任务。但最简单的方法是添加moment.js。

 var dateString=moment('date as string').toDate();

http://jsfiddle.net/cTcNK/5/

答案 4 :(得分:0)

我建议您使用ISO8601(http://en.wikipedia.org/wiki/ISO_8601)格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS。

所以:new Date('2014-02-24T09:22:21')

如果字符串是固定的......然后将其拆分并使用Date构造函数,如

new Date('2014', '02' - 1, '24', '09', '22', '21')