Adakah Pembina Tarikh IE Menyebabkan Ralat NaN dalam Penukaran Tarikh Merentas Pelayar?

Linda Hamilton
Lepaskan: 2024-10-20 13:37:02
asal
189 orang telah melayarinya

Does IE's Date Constructor Cause NaN Errors in Cross-Browser Date Conversions?

Pembina Tarikh IE Mengembalikan NaN: Penyelesaian Penukaran Tarikh Penyemak Imbas Rentas

Dalam bidang manipulasi tarikh JavaScript, isu pelik timbul dalam Internet Explorer (IE) di mana pembina Tarikh berkelakuan berbeza daripada rakan sebayanya dalam Firefox dan Chrome. Apabila cuba mencipta objek Tarikh baharu daripada rentetan, IE mengembalikan NaN (Bukan Nombor), manakala penyemak imbas lain menghasilkan tarikh yang sah.

Untuk memahami percanggahan ini, kita perlu menyelidiki mekanisme penghurai asas yang digunakan oleh setiap pelayar. Dalam IE, pembina Tarikh bergelut dengan format tarikh tertentu, terutamanya yang menyertakan koma sebagai pemisah.

Berikut ialah contoh khusus yang ditemui oleh pembangun yang cuba membina kalendar:

<code class="javascript">function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d<7;d++){
        headerDates += '<th>' + newDate + '</th>';
        newDate.setDate(newDate.getDate()+1);
    }                       

    jQuery('div#headerDates').html('<table><tr>'+headerDates+'</tr></table>');
}</code>
Salin selepas log masuk

Dalam fungsi ini, parameter dateText mewakili hari Isnin minggu semasa, diformatkan sebagai 'm, d, Y' (cth., "02, 01, 2010"). Walaupun format ini berfungsi dengan lancar dalam Firefox dan Chrome, ia menimbulkan cabaran dalam IE, yang gagal menghuraikan nilai yang dipisahkan koma dengan betul.

Untuk menyelesaikan isu ini, kami boleh menggunakan yang lebih konsisten dan serasi merentas penyemak imbas format tarikh. Satu pendekatan sedemikian adalah untuk menukar rentetan yang dipisahkan koma kepada tatasusunan nilai diskret, yang kemudiannya boleh digunakan untuk membina objek Date yang sah:

<code class="javascript">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]);</code>
Salin selepas log masuk

Dalam contoh ini, pembolehubah dateStr mewakili tarikh dan masa diambil daripada pangkalan data MySQL dalam format 'YYYY-MM-DD HH:MM:SS'. Dengan memisahkan rentetan ini kepada bahagian komponennya dan menghantarnya secara individu kepada pembina Tarikh, kami memastikan penukaran dikendalikan secara konsisten merentas penyemak imbas.

Penyelesaian ini menangani percanggahan penghuraian tarikh merentas penyemak imbas dan membolehkan fungsi buildWeek untuk berfungsi dengan lancar dalam semua penyemak imbas utama, termasuk Internet Explorer.

Atas ialah kandungan terperinci Adakah Pembina Tarikh IE Menyebabkan Ralat NaN dalam Penukaran Tarikh Merentas Pelayar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan