javascript date.parse разница в Chrome и других браузерах

javascript

7489 просмотра

1 ответ

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

Когда я бегу

var timestamp = Date.parse(facebookDate);

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

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

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

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

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

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

Alex

Автор: AlexMorley-Finch Источник Размещён: 30.07.2019 07:23

Ответы (1)


10 плюса

Решение

Вот исправление для 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 note

Подмножество строк даты в формате 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 "(с часовым поясом) пока не дает ожидаемого результата.

Автор: mplungjan Размещён: 25.11.2011 09:16
Вопросы из категории :
32x32