如何檢查 JavaScript 日期是否有效?


在本教程中,我們將學習如何檢查 JavaScript 日期是否有效。

讓我們透過示例瞭解為什麼需要在JavaScript中驗證日期。假設您開發了一個應用程式,該應用程式從使用者的提交表單中獲取一些資訊。使用者可能會出錯。如果他們在輸入框中輸入錯誤的日期怎麼辦?在這種情況下,開發人員需要驗證日期。

這裡,我們有三種不同的方法來驗證日期。

  • 使用 getTime() 方法

  • 使用 isFinite() 方法

  • 使用 Moment JS isValid() 方法

使用 getTime() 方法

在 JavaScript 中,我們可以透過建立Date() 類的物件來建立新的日期。我們可以將Date類的不同方法應用於日期物件。我們將在此方法中使用日期類的 getTime() 方法來驗證日期。

我們將檢查變數的型別。如果變數是Date物件型別,我們將檢查日期變數的getTime()方法是否返回數字。getTime()方法返回自 1970 年 1 月 1 日以來的總毫秒數。如果它沒有返回數字,則表示日期無效。

語法

使用者可以按照以下語法使用 getTime() 方法來驗證日期。

if ( Object.prototype.toString.call(date) === "[object Date]" ) {
   if ( !isNaN(date.getTime()) ) {

      // date is valid
   } else {
      Date is not valid
   }
} else {

   // date is not valid
}

引數

  • date − 它是一個日期變數,並且始終是必需的。

示例

在下面的示例中,我們建立了一個有效日期和另一個無效日期。我們建立了名為 isValid() 的函式來驗證日期。在函式中,我們檢查物件型別是否為 Date。此外,我們還使用 isNaN() 方法檢查 getTime() 方法是否返回數字。

<html> <head> </head> <body> <h2> check whether a JavaScript date is valid. </h2> <h4> Validate the date object using <i> getTime() </i> method. </h4> <p id = "validate"> </p> <script> let validate = document.getElementById("validate"); // creating the current date let date = new Date(); function isValid(date) { if ( Object.prototype.toString.call(date) === "[object Date]") { if ( !isNaN(date.getTime()) ) { validate.innerHTML += date + " is valid. <br/> "; } else { validate.innerHTML += date + " is not valid. <br/> "; } } else { validate.innerHTML += date + " is not valid. <br/> "; } } isValid(date); date = new Date("No date"); isValid(date); </script> </body> </html>

使用 isFinite() 方法

在 JavaScript 中,instanceof 運算子允許我們檢查變數是否是Date()類的例項。我們將首先檢查這一點,如果它是,我們將檢查 getTime() 方法是否返回有限的毫秒數。

如果日期變數不是 Date 物件型別,或者 getTime() 方法返回的值不是數字,則返回 false。

語法

使用者可以按照以下語法使用 isFinite() 方法來驗證日期

if ( date instanceof Date &&isFinite(date.getTime()) ) {
   
   // date is valid
} else {
   // date is not valid
}

示例

在下面的示例中,我們在 if-else 條件中使用了 instanceof 運算子來檢查變數的型別是否為日期。此外,我們還使用了 isFinite() 方法來檢查毫秒數是否有限。我們已經測試了各種日期,使用者可以在下面的示例輸出中看到結果。

<html> <head> </head> <body> <h2> check whether a JavaScript date is valid. </h2> <h4> Validate the date object using <i>isFinite() </i> method. </h4> <p id = "validate"> </p> <script> let validate = document.getElementById("validate"); function isValid(date) { // check typeof date and check for finite values of date.getTime() method if ( date instanceof Date &&isFinite( date.getTime()) ) { validate.innerHTML += date + " is valid. <br/> "; } else { validate.innerHTML += date + " is not valid. <br/> "; } } let date = new Date("No date"); isValid(date); date = new Date(); isValid(date); </script> </body> </html>

使用 Moment JS isValid() 方法

在 JavaScript 中,Moment Js 是一個用於操作日期的特殊庫。要使用Moment JS isValid() 方法驗證日期,使用者無需付出太多努力。

語法

使用者可以使用以下語法使用 Moment JS 的 isValid() 方法。

let date = moment();
let valid = date.isValid();

示例

在下面的示例中,我們添加了 Moment Js 庫的 CDN 以將其與原生 JavaScript 一起使用。我們使用 moment() 方法建立了兩個日期;一個是有效的,另一個是無效的。我們使用 isValid() 方法來驗證這兩個日期。

<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment-with-locales.min.js" integrity="sha512-vFABRuf5oGUaztndx4KoAEUVQnOvAIFs59y4tO0DILGWhQiFnFHiR+ZJfxLDyJlXgeut9Z07Svuvm+1Jv89w5g==" crossorigin="anonymous" referrerpolicy="no-referrer"> </script> </head> <body> <h2> check whether a JavaScript date is valid. </h2> <h4> Validate the date object using <i> moment.isValid() </i> method. </h4> <p id = "validate"> </p> <script> let validate = document.getElementById("validate"); let date = moment('2015-11-32', 'YYYY-MM-DD'); validate.innerHTML += " 2022-07-32 is valid : " + date.isValid() + "<br/>"; date = moment("2021-11-30", 'YYYY-MM-DD'); validate.innerHTML += " 2021 - 11- 31 is valid : " + date.isValid(); </script> </body> </html>

使用者學習了三種驗證日期的方法。第一種和第二種方法比第三種方法花費更多的時間和精力。建議使用 Moment Js 庫來操作日期,而不是使用舊的 Date 類。

更新於:2023年9月13日

30K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.