ISO 8601 часто используется для передачи информации о времени / дате между системами.
Он допускает только гггг-мм-дд для полуночи по Гринвичу этой даты,
или даты, за которой следует 'T'и данные времени,
с дополнительными секундами и миллисекундами (после', ').
гггг-мм-ддчч: мм
гггг-мм-ддчч: мм:ss.xxx
Вы заканчиваете буквой Z для времени по Гринвичу, ничего, также для времени по Гринвичу, или + или - и смещением hh: mm от GMT.
Вы можете сделать свой собственныйmethod - это возвращает локальную дату, используя встроенный метод, если он доступен - пока только firefox.
Date.ISO= function(s){
var D= new Date(s);
if(D.getDate()) return D;
var M= [], min= 0,
Rx= /([\d:]+)(\.\d+)?(Z|(([+\-])(\d\d):(\d\d))?)?$/;
D= s.substring(0, 10).split("-");
if(s.length> 11){
M= s.substring(11).match(Rx) || [];
if(M[1]) D= D.concat(M[1].split(":"));
if(M[2]) D.push(Math.round(M[2]*1000));
}
D= D.map(function(itm){return parseInt(itm, 10);});
D[1]-= 1;
while(D.length < 7) D.push(0);
if(M[4]){
min= parseInt(M[6])*60 + parseInt(M[7], 10);
if(M[5]== "+") min*= -1;
}
D= new Date(Date.UTC.apply(Date, D));
if(!D.getDate()) throw "Bad Date- " + s;
if(min) D.setMinutes(D.getMinutes()+ min);
return D;
}
// tests
var s= "2010-06-09T19:20:30+01:00";
alert(Date.ISO(s).toUTCString());
/ * value:(Строка) Safari 5.0: ср., 09 июня 2010 г. 18:20:30 GMT
MSIE 8.0: ср., 9 июня 2010 г. 18:20:30 UTC
Chrome 5.0.375.70: ср.,09 июня 2010 18:20:30 GMT
Opera 10.53: ср, 09 июня 2010 18:20:30 GMT
Firefox 3.6.3: ср, 09 июня 2010 18:20:30GMT * /
Примечание. Для работы в IE (и более старых браузерах) вам необходимо:фальшивый метод карты массива-
if(![].map){
Array.prototype.map= function(fun, scope){
var L= this.length, A= Array(this.length), i= 0, val;
if(typeof fun== 'function'){
while(i< L){
if(i in this){
A[i]= fun.call(scope, this[i], i, this);
}
++i;
}
return A;
}
}
}