Javascript date.parse разница в хром и другие браузеры

У меня есть строка даты "2011-11-24T09: 00: 27 + 0000", полученная из API graph.facebook.

Когда я запустил

var timestamp = Date.parse(facebookDate);

в хроме. Я получаю временную метку, относящуюся к дате! отлично!

Но в КАЖДОЙ другой крупный браузер... Я получаю "NaN"!!!

Несомненно, все эти браузеры используют ту же самую функцию анализа javascript?

Может ли кто-нибудь объяснить, почему одна и та же функция javascript дает разные результаты?

И кто-нибудь может сказать мне, как исправить эту проблему...

Заранее спасибо

Алекс

Ответы

Ответ 1

Вот исправление для Firefox и IE/Safari (с помощью JavaScript: какие браузеры поддерживают разбор строки даты ISO-8601 с помощью Date.parse  ):

DEMO

var noOffset = function(s) {
  var day= s.slice(0,-5).split(/\D/).map(function(itm){
    return parseInt(itm, 10) || 0;
  });
  day[1]-= 1;
  day= new Date(Date.UTC.apply(Date, day));  
  var offsetString = s.slice(-5)
  var offset = parseInt(offsetString,10)/100;
  if (offsetString.slice(0,1)=="+") offset*=-1;
  day.setHours(day.getHours()+offset);
  return day.getTime();
}

От MDN

Примечание JavaScript 1.8.5

Теперь можно также проанализировать подмножество строк даты в формате ISO 8601.

В качестве альтернативы строка даты/времени может быть в формате ISO 8601. Начиная с JavaScript 1.8.5/Firefox 4, подмножество ISO 8601 поддерживается. Например, "2011-10-10" (только дата) или "2011-10-10T14: 48: 00 (дата и время) могут быть переданы и проанализированы. Временные интервалы в датах ISO еще не поддерживаются, например," 2011- 10-10T14: 48: 00 + 0200 "(с часовым поясом) пока не дает ожидаемого результата.