如何将具有日期时间的字符串转换为日期时间格式。 我的代码是:
In Chrome its working fine:
var str = "05-Sep-2013 01:05:15 PM "
var res = Date.parse(str)
console.log(res) //o/p:1378366515000
var result = new Date(res)
console.log(result) //o/p:Thu Sep 05 2013 13:05:15 GMT+0530 (India Standard Time)
In Firefox and IE:
console.log(res) //o/p: NaN
console.log(result) //o/p: Date {Invalid Date}
你能帮我解决一下吗?提前谢谢。
答案 0 :(得分:0)
按照
的建议自行解析字符串https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
建议不要使用Date.parse直到ES5,解析 字符串完全取决于实现。还有很多 不同主机解析日期字符串的差异,因此是日期 字符串应该手动解析(如果很多,库可以帮助 要适应不同的格式。)
我给了你一个关于SO的答案的链接,解释了如何做到这一点。
Converting String into date format in JS
此示例甚至可以在非常旧或非常破坏的浏览器上运行。
var lookupMonthName = {
jan: 0,
feb: 1,
mar: 2,
apr: 3,
may: 4,
jun: 5,
jul: 6,
aug: 7,
sep: 8,
oct: 9,
nov: 10,
dec: 11
};
function customParse(dateTimeStr) {
var dateTime = dateTimeStr.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '').split(' ');
var date = dateTime[0].split('-');
date[1] = lookupMonthName[date[1].toLowerCase()].toString();
date.reverse();
var time = dateTime[1].split(':');
if (dateTime[2].toUpperCase() === 'PM') {
time[0] = (parseInt(time[0], 10) + 12).toString();
}
var args = date.concat(time);
console.log(args);
return new Date(Date.UTC.apply(null, args));
}
var str = '05-Sep-2013 01:05:15 PM ';
var date = customParse(str);
document.getElementById('out').appendChild(document.createTextNode(date));
console.log(date);
<pre id="out"></pre>
要从Date对象格式化字符串,请参阅SO答案
Where can I find documentation on formatting a date in JavaScript?
您需要付出一点努力,本来可以自己找到这些信息。
答案 1 :(得分:-1)
IE和FF希望&#39; /&#39;而不是&#39; - &#39;在日期
http://plnkr.co/edit/9ZoHwjvgMA2twEoTJTn9?p=preview
var str = "05-Sep-2013 01:05:15 PM ";
console.log( Date.parse( str ) ); // NaN
console.log( Date.parse( str.replace(/-/g, '/') ) ); // 1378404315000
所以解析会得到毫秒,现在你可以把它放在一个日期:
var d = new Date( Date.parse( str.replace(/-/g, '/') ) );
console.log( d ); // 2013-09-05T18:05:15.000Z
就像输入日期一样,但是采用差异格式。