ISO 8601日期扩展格式 与UTC 时间类型的相互转化

UTC时间类型比较常见,下例的时间就是UTC时间格式:

ISO 8601扩展格式为: YYYY-MM-DDTHH:mm:ss.sssZ 例如:(下图中红色边框圈起来的部分)


注意:只有兼容ECMAScript 5的实现才支持这种格式。支持这种时间格式的浏览器有:IE9,Chrome,FireFox,Safari等,IE9之前的IE浏览器 不支持这种时间格式。

将ISO 8601时间类型转化为UTC时间类型的方法如下(兼容及不兼容ECMAScript 5的浏览器都适用):

Date.prototype.setISO8601 = function (string) {
        var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
            "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
            "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
        if(string)
        {
            var d = string.match(new RegExp(regexp));
            var offset = 0;
            var date = new Date(d[1], 0, 1);

            if (d[3]) {
                date.setMonth(d[3] - 1);
            }
            if (d[5]) {
                date.setDate(d[5]);
            }
            if (d[7]) {
                date.setHours(d[7]);
            }
            if (d[8]) {
                date.setMinutes(d[8]);
            }
            if (d[10]) {
                date.setSeconds(d[10]);
            }
            if (d[12]) {
                date.setMilliseconds(Number("0." + d[12]) * 1000);
            }
            if (d[14]) {
                offset = (Number(d[16]) * 60) + Number(d[17]);
                offset *= ((d[15] == '-') ? 1 : -1);
            }
            offset -= date.getTimezoneOffset();
            time = (Number(date) + (offset * 60 * 1000));
            this.setTime(Number(time));
        }
        else
        {
            return;
        }
    }
引用方法如下:

var today = new Date();
today.setISO8601(temprature_time_sorted_uniq[i].tm);
其中temprature_time_sorted_uniq[i].tm 是传递给函数的ISO 8601类型的时间参数。它的值如下:


转化后的值为:

如果想把UTC格式转化为ISO 8601,方法如下:

function ISODateString(d) {
    function pad(n){
        return n<10 ? '0'+n : n
    }
    return d.getUTCFullYear()+'-'
    + pad(d.getUTCMonth()+1)+'-'
    + pad(d.getUTCDate())+'T'
    + pad(d.getUTCHours())+':'
    + pad(d.getUTCMinutes())+':'
    + pad(d.getUTCSeconds())+'Z'
}

引用方式:

参考资料:
http://webcloud.se/log/JavaScript-and-ISO-8601/





你可能感兴趣的:(JavaScript学习笔记)