новый Date () работает в Chrome, но не Firefox - PullRequest
82 голосов
/ 15 июля 2010

Я создаю строку даты и времени, которая выглядит следующим образом: 2010-07-15 11:54:21

И с помощью следующего кода я получаю недопустимую дату в Firefox, но прекрасно работает в Chrome

var todayDateTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + seconds;
var date1 = new Date(todayDateTime);

В Firefox date1 дает мне недопустимую дату, но в chrome она работает просто отлично, какой будет основная причина?

Ответы [ 12 ]

0 голосов
/ 01 июня 2015

На самом деле, Chrome более гибок для работы с другим форматом строки.Даже если вы не определите его формат строки, Chrome все равно сможет успешно конвертировать строку в дату без ошибок.Вот так:

  var outputDate = new Date(Date.parse(inputString));

Но для Firefox и Safari все становится сложнее.Фактически, в документе Firefox уже сказано: (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)

Строка, представляющая дату RFC2822 или ISO 8601 (могут использоваться другие форматы, но результаты могут быть неожиданными).

Итак, когда вы хотите использовать Date.parse в Firefox и Safari, вы должны быть осторожны. Для меня я использую хитрый метод, чтобы справиться с этим (Примечание: это можетне всегда корректно для всех случаев)

if (input.indexOf("UTC") != -1) {
  var tempInput = inputString.substr(0, 10) + "T" + inputString.substr(11, 8) + "Z";
  date = new Date(Date.parse(tempInput));
}

Здесь он преобразует 2013-08-08 11:52:18 UTC в 2013-08-08T11: 52: 18Z сначала, а затем его формат соответствует словам в документе Firefox. В настоящее время Date.parse всегда будет правильным в любом браузере.

0 голосов
/ 22 сентября 2014

В Firefox любая недопустимая дата возвращается как объект Date как Date 1899-11-29T19:00:00.000Z, поэтому проверьте, является ли браузер Firefox, затем получите объект Date из строки "1899-11-29T19:00:00.000Z".getDate(). Наконец сравните это с датой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...