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

时间:2013-03-19 07:59:08

标签: javascript

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

日期格式如下

E MMM dd HH:mm:ss Z yyyy

e.g。

Sat Jun 30 00:00:00 CEST 2012

提前致谢

编辑: 我的工作解决方案基于公认的答案。要使其在IE8中运行,您必须将月份部分(例如Jun)替换为月份编号(例如,6月为5,因为1月为0)

2 个答案:

答案 0 :(得分: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);

This might be a good list of time zone abbreviation.

答案 1 :(得分:0)

您可以使用以下代码将字符串转换为datetime:

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);