Javascript新日期跨浏览器格式问题

时间:2015-09-29 07:10:27

标签: javascript date

我在使用Javascript时遇到日期字符串格式问题。在IE上,日期格式为MM-DD-YYYY,但在Firefox上为YYYY-MM-DD。 Chrome可以同时使用它们,但是当我选择其中一种格式时,另一种浏览器会给我一个无效日期警告。

我的代码作为示例(适用于IE但不适用于Firefox):

  var dateSTR = "2015-09-29";
  var date  = new Date(dateSTR.replace(/(\d{4})-(\d{2})-(\d{2})/,"$2-$3-$1"));
  date.setUTCHours(date.getHours());
  date.setUTCMinutes(date.getMinutes());
  return date.toLocaleDateString(); 

https://jsfiddle.net/kmmna8c0/

4 个答案:

答案 0 :(得分:2)

此代码将在IE,Chrome和FireFox中返回相同的日期:



var dateSTR = "2015-09-29";
var dateArr = dateSTR.split("-");
var theDate = new Date(dateArr[0], dateArr[1]-1, dateArr[2]);
alert(theDate);




答案 1 :(得分:1)

您似乎正在尝试从预定义的字符串创建Date对象(在您的示例中:" 2015-09-29")。

您可以使用以下内容:

var dateSTR = "2015-09-29";
var dateYear = 2015;         // create this from dateSTR
var dateMonth = 8;           // create this from dateSTR (= month-1)
var dateDay = 9;             // create this from dateSTR

然后使用:

var date = new Date(dateYear, dateMonth, dateDay);

基于此处的解释:http://www.w3schools.com/jsref/jsref_obj_date.asp

答案 2 :(得分:1)

像这样拆分

var args = dateStr.split(/[-/]/); // Add any special characters if you need.

并像这样创建日期

var d = new Date(args[0], args[1] - 1, args[2]);

多数民众赞成。

答案 3 :(得分:1)

我只看到toLocaleDateString的不同之处 - 注意:我在欧洲,所以只有FX会告诉我我想要的东西

    var dateSTR = "2015-09-29";
    var date  = new Date(dateSTR.replace(/-/g,"/"));

    console.log("0:"+ new Date("2015/09/29"))
    console.log("1:"+date)
    date.setUTCHours(date.getHours());
    console.log("2:"+date)
    date.setUTCMinutes(date.getMinutes());
    console.log("3:"+date);
    console.log("4:"+date.toLocaleDateString()); 

铬:

0:Tue Sep 29 2015 00:00:00 GMT+0200 (W. Europe Daylight Time)
1:Tue Sep 29 2015 00:00:00 GMT+0200 (W. Europe Daylight Time)
2:Mon Sep 28 2015 02:00:00 GMT+0200 (W. Europe Daylight Time)
3:Mon Sep 28 2015 02:00:00 GMT+0200 (W. Europe Daylight Time)
4:9/28/2015

IE10:

0:Tue Sep 29 00:00:00 UTC+0200 2015 
1:Tue Sep 29 00:00:00 UTC+0200 2015 
2:Mon Sep 28 02:00:00 UTC+0200 2015 
3:Mon Sep 28 02:00:00 UTC+0200 2015 
4:28 September 2015 

FX:

"0:Tue Sep 29 2015 00:00:00 GMT+0200" 
"1:Tue Sep 29 2015 00:00:00 GMT+0200" 
"2:Mon Sep 28 2015 02:00:00 GMT+0200" 
"3:Mon Sep 28 2015 02:00:00 GMT+0200" 
"4:28/09/2015"
相关问题