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'
}
引用方式: