当前位置:编程学习 > wap >>

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

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


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

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

[javascript]
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; 
        } 
    } 
引用方法如下:
[html] 
var today = new Date(); 
today.setISO8601(temprature_time_sorted_uniq[i].tm); 
其中temprature_time_sorted_uniq[i].tm 是传递给函数的ISO 8601类型的时间参数。它的值如下:

 

转化后的值为:

 

如果想把UTC格式转化为ISO 8601

[html] 
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' 

引用方式:

 

补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,