我在使用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();
答案 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);
答案 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"