我正在将一个简单的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
。我在这里做错了什么?
我也尝试用-
替换\
,但它没有帮助。
是否可以在不使用任何库的情况下执行此操作?
答案 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();
答案 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')