JavaScript >> Javascript 文檔 >  >> Tags >> Date

在 JavaScript 中比較兩個日期

簡介

日期是開發人員使用的一種非常常見的數據類型。從某些操作的時間戳,到報告、註冊功能和需要訂閱的系統中的限時訪問 - 我們經常需要比較日期。

也就是說,我們比較一個日期是在另一個日期之後還是之前,如果日期是今天 , 日期之間有多少天等。

在本文中,我們將了解 如何在 JavaScript 中比較兩個日期 ,幫助我們推斷日期是在另一個日期之前還是之後。

日期 JavaScript 中的對象

Web 開發人員通常使用外部包(如 Moment.js)來處理日期時間操作。但是,隨著現代網絡的發展,JavaScript 引入了一個名為 Date 的新對象構造函數 處理日期時間操作。

這意味著您不需要外部庫來執行基本的檢查和操作,這使得在 Vanilla JS 中執行這些事情變得更加容易。

Date 類在底層非常容易理解 - 它只存儲 Unix 時間 以毫秒為單位。

儘管這個實現看起來有點簡單,但添加 Date 類是一個很大的改進,因為在開發人員和原始日期之間終於有了一定程度的抽象。

現在,讓我們看看使用 Date 比較兩個日期的不同方法 對象。

在 JavaScript 中比較兩個日期

我們可以使用比較運算符,例如 <> 兩個比較兩個 Date 對象,並且在引擎蓋下,它們的時間計數器被有效地比較。您實際上是在比較兩個整數計數器:

function dateCompare(d1, d2){
    const date1 = new Date(d1);
    const date2 = new Date(d2);

    if(date1 > date2){
        console.log(`${d1} is greater than ${d2}`)
    } else if(date1 < date2){
        console.log(`${d2} is greater than ${d1}`)
    } else{
        console.log(`Both dates are equal`)
    }
}

dateCompare("6/11/2020", "7/8/2019")
dateCompare("01/01/2021", "01/01/2021")

這導致:

6/11/2020 is greater than 7/8/2019
Both dates are equal

正如我們所見,比較日期歸結為將提供的字符串轉換為 Date 對象並使用適當的比較運算符進行比較。

注意: 等式運算符(===== ) 不適用於 Date 對象,所以我們不會明確檢查它們是否相同。

比較兩個日期的另一種方法是使用內置的 getTime() 方法。

getTime() 方法返回自 Unix 紀元以來經過的毫秒數。此外,您可以使用 getDate() , getHours() , getDay() , getMonth()getYear() 進一步指定和比較信息的方法,以及其他類似命名的方法。

此外,您還可以使用 getUTCDay() , getUTCDate() , getUTCHour() , getUTCMinute() 等方法,它們返回給定的時間標識符,專門劃分為 UTC。

注意: 通過這種方法,您可以 使用相等運算符!

我們來看一個例子:

function compareDates(d1, d2){
    const date1 = new Date(d1);
    const date2 = new Date(d2);

    if(date1.getTime() > date2.getTime()){
        console.log(`${d1} is greater than ${d2} in terms of milliseconds`)
    } else if(date1.getYear() < date2.getYear()){
        console.log(`${d2} is greater than ${d1} in terms of years`)
    } else if(date1.getDate() === date2.getDate()){
        console.log(`Both dates are equal`)
    }
}

compareDates("9/10/1997", "9/10/2000")
compareDates("11/11/2021", "11/1/2021")

這導致:

9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds

不過,由於我們正在使用 ifif-else 塊,有些語句永遠無法執行。例如,9/10/19979/10/2000 有相同的日期 , 9/10 ,不過,不是同一年。

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

例如這段代碼:

function compareDates(d1, d2){
    const date1 = new Date(d1);
    const date2 = new Date(d2);
    
    if(date1.getDate() === date2.getDate()){
        console.log(`Both dates are equal`)
    }
}

compareDates("09/10/1997", "9/10/2000")

會導致:

Both dates are equal

因為我們只是比較日期,而不考慮年份。

結論

在本文中,我們簡要介紹了 JavaScript 如何使用 Date 處理日期 對象。然後,我們介紹瞭如何在 JavaScript 中比較日期,記住一些有用的方法。


Tutorial JavaScript 教程
  1. 構建漸進式 Web 應用程序 (PWA) 的最佳方法

  2. 理解 JavaScript 中的 Promise

  3. TIL:解構屬性分配

  4. TIL - 在 Javascript 中傳播和復制對象

  5. 蓋茨比主題陰影

  6. 在 php/javascript 中打開/瀏覽對話框?

  7. 讓我們為自己寫一個片段!

  1. 鳳凰頻道、WebSocket 和 NodeJS。

  2. 如何在貓鼬中編寫多個查詢?

  3. 基於表單更改啟用和禁用按鈕的javascript

  4. NGRX 商店中的測試操作

  5. 在 React 中為電子商務網站實現搜索欄

  6. 從 php if 語句運行 JavaScript 函數

  7. 構建遊戲 Yahtzee

  1. 使用 Vue 和 Kanye Rest 構建 WordPress 插件

  2. Express:處理錯誤的可擴展方式

  3. 結束我在 2021 年的 Web 開發故事。

  4. 適用於 PHP 開發人員的 Node.js:5 個必須了解的實用方面以及代碼示例