Новая версия браузера поддерживает новую дату ("2010-11-30T08: 32: 22 + 0000") (Chrome, FF4, IE9), но старые браузеры не поддерживают.
Если часовой пояс не имеет смысла (в случаях, когда он всегда равен нулю (ваш случай) или отсутствует), вы можете использовать это:
Date.fromISOString = (function(){
function fastDateParse(y, m, d, h, i, s, ms){
return new Date(y, m - 1, d, h || 0, i || 0, s || 0, ms || 0);
}
// result function
return function(isoDateString){
return fastDateParse.apply(null, isoDateString.split(/\D/));
}
})();
Если вам нужно разобрать с часовым поясом, используйте это:
Date.fromISOString = (function(){
var tzoffset = (new Date).getTimezoneOffset();
function fastDateParse(y, m, d, h, i, s, ms){ // this -> tz
return new Date(y, m - 1, d, h || 0, +(i || 0) - this, s || 0, ms || 0);
}
// result function
return function(isoDateString){
var tz = isoDateString.substr(10).match(/([\-\+])(\d{1,2}):?(\d{1,2})?/) || 0;
if (tz)
tz = tzoffset + (tz[1] == '-' ? -1 : 1) * (tz[3] != null ? +tz[2] * 60 + (+tz[3]) : +tz[2]);
return fastDateParse.apply(tz || 0, isoDateString.split(/\D/));
}
})();
Правильные формы даты:
Date.fromISOString('2011-06-01');
Date.fromISOString('2011-06-01T00:00:00');
Date.fromISOString('2011-06-01T00:00:00Z');
Date.fromISOString('2011-06-01T00:00:00+30');
Date.fromISOString('2011-06-01T00:00:00-30');
Date.fromISOString('2011-06-01T00:00:00+0530');
Date.fromISOString('2011-06-01T00:00:00-0530');
Date.fromISOString('2011-06-01T00:00:00+05:30');
Date.fromISOString('2011-06-01T00:00:00-05:30');
// Your example valid as well.
Date.fromISOString("2010-11-30T08:32:22+0000")