将自定义日期字符串转换为日期对象

Luk*_*e94 2 javascript

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

日期具有以下格式

E MMM dd HH:mm:ss Z yyyy
Run Code Online (Sandbox Code Playgroud)

例如

Sat Jun 30 00:00:00 CEST 2012
Run Code Online (Sandbox Code Playgroud)

提前致谢

编辑:我的工作解决方案基于已接受的答案.要使它在IE8中工作,您必须将月份部分(例如Jun)替换为月份编号(例如6月份为5,因为1月份为0)

dru*_*bot 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);
Run Code Online (Sandbox Code Playgroud)

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

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

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