2010-03-10 4 views
4

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

Код для управления фиников

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

ответ

0

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

0

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

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

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

Смежные вопросы