IE中的Javascript日期解析问题

时间:2015-07-16 14:54:48

标签: javascript jquery regex internet-explorer firefox

我在JavaScript 2015-07-22 00:00:00.0中有一个字符串。我需要将其转换为mm/dd/yy格式

我尝试使用var d = new Date(from_date);解析,该解析适用于Chrome,但不适用于IE或Firefox

然后我尝试使用正则表达式模式替换,但它仍然只适用于Chrome但不适用于IE或Firefox

var st = '2015-07-22 00:00:00.0'
var pattern = '\d{4})\-(\d{2})\-(\d{2})/'
var dt = new Date(st.replace(pattern, '$2-$3-$1'));
var output = dt.getMonth() + 1 + '/' + dt.getDate() + '/' + dt.getFullYear();
alert(output) 

JSFiddle

请点亮。

3 个答案:

答案 0 :(得分:3)

如果日期始终采用该格式,您可以将其子串出来并使用standard date format来使其正常工作。

var r = "2015-07-22 00:00:00.0"
var date = new Date(r.substring(0, 4),   //year
                    r.substring(5, 7),   //month
                    r.substring(8, 10),   //day
                    r.substring(11, 13), //hour
                    r.substring(14, 16), //min
                    r.substring(17, 19), //sec
                    r.substring(20));    //mili

答案 1 :(得分:2)

每当您使用Javascript对日期和时间进行任何操作时,我建议您使用momentJS

在你的情况下,你应该做这样的事情来解析字符串:

var x = moment(st, "YYYY-MM-DD");

然后输出:

console.log( x.format("MM/DD/YYYY") );

答案 2 :(得分:-1)

这应该适合你。

var date = new Date('2015-07-22 00:00:00.0'.replace(/ /g, 'T')),
  monthDigits = [ '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12' ];

console.log(monthDigits[date.getMonth()] + '/' + date.getDate() + '/' + date.getFullYear());