Pengesanan Contoh Tarikh Tidak Sah dalam JavaScript
Mengesahkan objek tarikh dalam JavaScript boleh mencabar kerana kewujudan tika "tarikh tidak sah". Objek ini kelihatan sah (instanceof Date returns true) tetapi mewakili tarikh tidak sah. Artikel ini meneroka pelbagai pendekatan untuk mengesan kejadian sedemikian.
Soalan Asal
Kod yang disediakan menunjukkan masalah:
var d = new Date("foo"); console.log(d.toString()); // shows 'Invalid Date' console.log(typeof d); // shows 'object' console.log(d instanceof Date); // shows 'true'
Disyorkan Penyelesaian
1. Sahkan menggunakan Date.parse()
Date.parse menghuraikan rentetan tarikh dan mengembalikan tarikh atau NaN yang sah jika rentetan itu tidak sah. Ini boleh digunakan untuk mengesahkan rentetan tarikh sebelum mencipta objek Tarikh:
if (Date.parse("foo") === NaN) { // invalid date string }
2. Ujian untuk Nilai Masa NaN
Untuk contoh Tarikh sedia ada, anda boleh menguji nilai masa (getTime() atau valueOf()):
if (isNaN(d.getTime())) { // invalid Date object }
Kaedah ini bergantung pada ECMA -262 spesifikasi, yang menyatakan bahawa objek Tarikh yang tidak sah mempunyai nilai masa NaN.
Diutamakan Kod
Berdasarkan pengesyoran ini, fungsi berikut boleh digunakan untuk mengesahkan contoh Tarikh:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
Kaedah Alternatif
Jika anda tidak mengambil berat dengan objek Tarikh daripada konteks JS luaran, bentuk yang lebih mudah ini mungkin diutamakan:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
Nota
Jawapan ini memfokuskan pada pengesahan kejadian Tarikh, tetapi penting untuk ambil perhatian bahawa ia tidak meliputi kesahihan input tarikh itu sendiri (cth. , 2013-13-32).
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Contoh Tarikh Tidak Sah dengan Amanah dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!