如何将日期的字符串表示形式转换为真正的 javascript 日期对象?
日期具有以下格式
E MMM dd HH:mm:ss Z yyyy
例如
Sat Jun 30 00:00:00 CEST 2012
提前致谢
编辑:我的工作解决方案基于接受的答案。要让它在 IE8 中工作,您必须将月份部分(例如 Jun)替换为月份编号(例如 5 代表六月,因为一月是 0)
如何将日期的字符串表示形式转换为真正的 javascript 日期对象?
日期具有以下格式
E MMM dd HH:mm:ss Z yyyy
例如
Sat Jun 30 00:00:00 CEST 2012
提前致谢
编辑:我的工作解决方案基于接受的答案。要让它在 IE8 中工作,您必须将月份部分(例如 Jun)替换为月份编号(例如 5 代表六月,因为一月是 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);