Неисправности конструктора даты в 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, которые могут нанести ущерб вашему коду.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3