«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Что вызывает ошибки NaN в Internet Explorer при использовании конструктора даты JavaScript?

Что вызывает ошибки NaN в Internet Explorer при использовании конструктора даты JavaScript?

Опубликовано 9 ноября 2024 г.
Просматривать:951

What Causes NaN Errors in Internet Explorer When Using JavaScript\'s Date Constructor?

Неисправности конструктора даты в IE: межбраузерное сравнение

В сфере веб-разработки конструктор даты в JavaScript оказался надежный союзник разработчиков, стремящихся манипулировать датами. Однако при использовании этого конструктора в основных браузерах наблюдалось любопытное явление. В то время как Firefox и Chrome с радостью используют функциональность Date, Internet Explorer, как известно, спотыкается, возвращая NaN (не число) для определенных операций с датами.

Чтобы разгадать эту загадку, давайте углубимся в конкретную проблему, наблюдаемую разработчик, создающий календарь. Их конструкция даты из строки даты в формате PHP ('m, d, Y') работала безупречно в Firefox и Chrome, но IE настаивал на том, чтобы закатывать истерики NaN.

Проблема построения даты

function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d

Корень проблемы кроется в формате даты. Хотя IE может анализировать даты в своем собственном формате («ГГГГ-ММ-ДД»), у него возникают проблемы с форматом «m, d, Y», используемым в этом коде.

Решение: Стандартизация формата даты

Чтобы обеспечить совместимость между браузерами, крайне важно стандартизировать формат даты, используемый при построении даты. Рекомендуемый подход — преобразовать строку даты в формат, понятный IE. Одним из удобных вариантов является использование метода Split() для анализа строки даты и последующей передачи отдельных компонентов в конструктор Date.

Например, если предположить, что поле даты и времени MySQL возвращает строку типа «2011- 08-03 09:15:11", следующий фрагмент кода нормализует формат для совместимости с IE:

var dateStr="2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);

Приняв это подходе вы можете гарантировать, что ваши операции с датами будут корректно выполняться во всех основных браузерах, устраняя необъяснимые ошибки NaN, которые могут нанести ущерб вашему коду.

Заявление о выпуске Эта статья перепечатана по адресу: 1729402280. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3