在 JavaScript 中驗證日期實例的有效性
確定 JavaScript 中日期實例的有效性可能具有挑戰性。讓我們探討 「無效日期」 問題,並找到可靠偵測無效 Date 物件的解決方案:
Date 物件是表示特定時刻的 JavaScript 建構。從無效日期字串建立 Date 實例時會出現問題,如下例所示:
var d = new Date("foo");
此程式碼產生一個「無效日期」實例,該實例是 object 類型並繼承自 Date 原型。但是,Object.prototype.toString.call(d) 傳回“[object Date]”,並且 d instanceof Date 的計算結果為 true。
解決方案:
這裡有一個檢查有效Date 實例的簡單方法:
if (Object.prototype.toString.call(d) === "[object Date]") { if (isNaN(d.getTime())) { // Invalid Date } else { // Valid Date } } else { // Not a Date object }
此方法確保該實例是Date 對象,且它的時間值不是NaN。如果任一條件失敗,則 Date 實例視為無效。
更新 [2018-05-31]:
對於來自外部上下文的 Date物件不是擔心,可以使用更簡單的驗證函數:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
注意[2021-02-01]:
需要注意的是,「無效日期」和「無效日期物件」之間是有區別的。這個答案的重點是驗證日期實例,而不是日期輸入字串。
以上是如何可靠地驗證 JavaScript 日期實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!