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

convert custom date string to date object

本文关键字:日期 对象 转换 字符串 自定义      更新时间:2023-09-26

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

日期格式如下

E MMM dd HH:mm:ss Z yyyy

Sat Jun 30 00:00:00 CEST 2012

Thanks in advance

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

您的日期字符串大多可以按原样解析,但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);

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

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

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