"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يختلف IE Date Constructor عن التعامل مع التاريخ في Chrome وFirefox؟

لماذا يختلف IE Date Constructor عن التعامل مع التاريخ في Chrome وFirefox؟

تم النشر بتاريخ 2024-11-08
تصفح:477

Why Does IE Date Constructor Differ from Chrome and Firefox Date Handling?

مشكلة منشئ التاريخ في IE: NaN مقابل الوظائف في المتصفحات الأخرى

ضمن مشروع يتضمن تطوير تقويم JavaScript، ظهرت اختلافات في التعامل مع التاريخ بين Internet Explorer (IE) والمتصفحات مثل Firefox وChrome. على وجه التحديد، كانت وظائف التاريخ في IE تؤدي إلى قيم NaN (ليس رقمًا)، بينما كانت تعمل بشكل صحيح في المتصفحات الأخرى.

بعد التحقيق، أصبح من الواضح أن السبب الجذري كان مرتبطًا بتنسيق التاريخ المستخدم. تهدف الوظيفة المعنية، buildWeek()، إلى إنشاء تواريخ رأسية لأسبوع تقويمي استنادًا إلى تاريخ الاثنين المقدم بالتنسيق 'm، d، Y'، على سبيل المثال، "02، 01، 2010". ومع ذلك، في IE، لم يتم التعرف على هذا التنسيق بشكل صحيح، مما أدى إلى مشكلة NaN.

لحل هذا التناقض، تم اعتماد نهج مختلف. بدلاً من الاعتماد على التنسيق المحدد، تم تقسيم سلسلة التاريخ إلى مكوناتها (التاريخ والوقت) باستخدام Split(" "). بعد ذلك، تم تقسيم مكون التاريخ إلى الأجزاء المكونة له (السنة والشهر واليوم) باستخدام Split("-")، وتم تقسيم مكون الوقت إلى أجزائه (الساعات والدقائق والثواني) باستخدام Split(":") .

تم بعد ذلك إنشاء مثيل للتاريخ باستخدام هذه القيم التي تم تحليلها. أثبتت هذه الطريقة أنها متوافقة مع جميع المتصفحات، مما يضمن معالجة متسقة للتاريخ عبر IE وFirefox وChrome.

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 في IE بنجاح، مما أدى إلى معالجة متسقة للتاريخ عبر متصفحات مختلفة.

بيان الافراج أعيد طبع هذه المقالة على: 1729402457 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3