2016-08-25 78 views
0

如何将具有日期时间的字符串转换为日期时间格式。 我的代码是:Date.parse()在火狐和IE.Its工作不正常在Chrome中工作

 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} 

请你帮我一下。提前致谢。

+1

转换横线,以斜线 – SoluableNonagon

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/parse – Xotic750

+0

感谢@ SoluableNonagon, \t \t无功海峡=“05九月2013 01:05:15 PM“; \t \t str1 = str.replace(/ -/g,'/'); \t \t var res = Date.parse(str1); \t \t console.log(res); var result = new Date(res) \t \t console。日志(结果); \t \t \t \t O/P:1378366515000 日期{星期四2013年9月5日13时05分15秒GMT + 0530(印度标准时间)} \t \t \t \t \t \t但我想“星期四2013年9月5日13:格林威治标准时间05:15 + 0530(印度标准时间)“,我们将如何采取。 – Venky

回答

-1

IE和FF想 '/' 而不是 ' - ' 在日期

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 

在那里,它与您的输入日期相同,但格式不同。

+0

它不能在IE中工作,请你帮我解决。 – Venky

+0

按照https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/parse自己解析字符串,使用数据创建一个新的Date对象,然后使用Date方法来格式化必需字符串。在这里有很多例子。解析你的字符串的一个例子。 http://stackoverflow.com/questions/27720916/converting-string-into-date-format-in-js/27721275#27721275 – Xotic750

+0

谢谢@ Xotic750,console.log(Date.parse(str.replace(/ -/g ,'/'))); //在IE中是o/p NaN。请帮帮我。 – Venky

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对象的字符串,看到这么回答

Where can I find documentation on formatting a date in JavaScript?

一点力气在你的一部分,你就已经能够找到此信息你自己。

相关问题