2

如何将日期的字符串表示形式转换为真正的 javascript 日期对象?

日期具有以下格式

E MMM dd HH:mm:ss Z yyyy

例如

Sat Jun 30 00:00:00 CEST 2012

提前致谢

编辑:我的工作解决方案基于接受的答案。要让它在 IE8 中工作,您必须将月份部分(例如 Jun)替换为月份编号(例如 5 代表六月,因为一月是 0)

4

2 回答 2

6

您的日期字符串大部分可以按原样解析,但CEST不是ISO 8601中的有效时区,因此您必须手动将其替换为+0200.

因此,一个简单的解决方案可能是:

var str = "Sat Jun 30 00:00:00 CEST 2012";
str = str.replace(/CEST/, '+0200');
var date = new Date(str);

如果要支持由其名称定义的其他时区,则必须找到它们的可能值和相关偏移量。您可以在地图中注册它们:

var replacements = {
    "ACDT": "+1030",
    "CEST": "+0200",
    ... 
};
for (var key in replacements) str = str.replace(key, replacements[key]);
var date = new Date(str);

这可能是一个很好的时区缩写列表。

于 2013-03-19T08:11:24.423 回答
0

您可以使用以下代码将字符串转换为日期时间:

var sDate = "01/09/2013 01:10:59";
 var dateArray = sDate.split('/');
 var day = dateArray[1];

 // Attention! JavaScript consider months in the range 0 - 11
 var month = dateArray[0] - 1;
 var year = dateArray[2].split(' ')[0];
 var hour = (dateArray[2].split(' ')[1]).split(':')[0];
 var minute = (dateArray[2].split(' ')[1]).split(':')[1];
 var objDt = new Date(year, month, day, hour, minute);
 alert(objDt);
于 2013-03-19T08:21:19.983 回答