javascript date работает во всех браузерах, кроме iPhone / iPod Touch - PullRequest
4 голосов
/ 11 марта 2010

У меня есть некоторый код для работы с датами в JavaScript. Это работает в IE, FF, Safari (настольные версии win & mac), Chrome, Opera. В iPhone safari (мобильное сафари) я получаю ответ «неверная дата».

Код для управления датами

    function fixDateFormat(dateText){
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        newDate = new Date(NaN), month,
        parts = isoExp.exec(dateText);

    if(parts) {
      month = +parts[2];
      newDate.setFullYear(parts[1], month - 1, parts[3]);
      if(month != newDate.getMonth() + 1) {
        newDate.setTime(NaN);
      } else {
        newDate.setHours(0, 0, 0, 0);
      }
    }
    return newDate;
    }

Где dateFormat отправляется в эту функцию как Y-m-d (хотя я понимал, что эта функция будет работать с множеством форматов).

Ответы [ 2 ]

0 голосов
/ 25 сентября 2011

Должны быть некоторые ошибки в Mobile Safari, так как у меня есть эта проблема, она работает везде, кроме устройства на iOS. Он неправильно анализирует действительное значение даты и времени ISO (например, '2011-10-09T14: 00: 00.0000000 + 01: 00').

Проблема с использованием метки времени UNIX, хотя она работает с новым методом Date (). SetTime (); время конвертируется в UTC, поэтому, если ваше приложение не обрабатывает смещения UTC, оно покажет неверное время. В частности, если дата и время относятся к дате в будущем или в течение периода, когда летнее время изменилось, время в метке времени эпохи будет неправильным. Вот почему отметки времени не используются для хранения значений даты и времени.

Единственный обходной путь, который я смог найти, это разделить объект даты в объект JSON, содержащий его свойства, а затем восстановить их на клиенте обратно в объект Date ().

0 голосов
/ 21 сентября 2011

Я решил это, передав «миллисекунды с эпохи» вместо этой отформатированной строки даты.

...