DD HH:MM:SS T
这个问题在这里已经有了答案:
我删除了我以前的(不太相关的)答案。 这个功能应该更适合你的目的。
关键策略是在没有时区的情况下获得时间的绝对表示,然后根据指定的时区向后或向前调整它。 它吐出的是浏览器本地时区中的Date
对象,但它与字符串的时间完全相同。
另外,你指定的格式不太符合规范,所以我写的正则表达式接受你的版本以及ISO8601。
Date.createFromString = function (string) {
'use strict';
var pattern = /^(dddd)-(dd)-(dd)[ T](dd):(dd):(dd)([+-Z])(dd):(dd)$/;
var matches = pattern.exec(string);
if (!matches) {
throw new Error("Invalid string: " + string);
}
var year = matches[1];
var month = matches[2] - 1; // month counts from zero
var day = matches[3];
var hour = matches[4];
var minute = matches[5];
var second = matches[6];
var zoneType = matches[7];
var zoneHour = matches[8] || 0;
var zoneMinute = matches[9] || 0;
// Date.UTC() returns milliseconds since the unix epoch.
var absoluteMs = Date.UTC(year, month, day, hour, minute, second);
var ms;
if (zoneType === 'Z') {
// UTC time requested. No adjustment necessary.
ms = absoluteMs;
} else if (zoneType === '+') {
// Adjust UTC time by timezone offset
ms = absoluteMs - (zoneHour * 60 * 60 * 1000) - (zoneMinute * 60 * 1000);
} else if (zoneType === '-') {
// Adjust UTC time by timezone offset
ms = absoluteMs + (zoneHour * 60 * 60 * 1000) + (zoneMinute * 60 * 1000);
}
return new Date(ms);
};
使用moment.js的日期解析:
var date = moment("2012-05-23 12:12:00-05:00");
请参阅http://momentjs.com/docs/#/parsing/string/
链接地址: http://www.djcxy.com/p/18613.html上一篇: DD HH:MM:SS T