DD HH:MM:SS T

这个问题在这里已经有了答案:

  • 为什么Date.parse会提供不正确的结果? 10个答案

  • 我删除了我以前的(不太相关的)答案。 这个功能应该更适合你的目的。

    关键策略是在没有时区的情况下获得时间的绝对表示,然后根据指定的时区向后或向前调整它。 它吐出的是浏览器本地时区中的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

    下一篇: Javascript Date string constructing wrong date