在 JavaScript 中,我們可以使用 Date() 對象來創(chuàng)建不同的時(shí)間戳。此外,我們可能需要使用 JavaScript 檢查一個(gè)日期是否介于兩個(gè)日期之間。
例如,我們希望根據(jù)日期為電子商務(wù)應(yīng)用程序中的訂單創(chuàng)建過濾器。因此,我們應(yīng)該能夠過濾用戶在日期輸入字段中輸入的兩個(gè)日期之間的所有訂單。
檢查兩個(gè)日期之間的另一個(gè)實(shí)際用例是在銀行應(yīng)用程序中。例如,在開發(fā)銀行系統(tǒng)應(yīng)用程序時(shí),開發(fā)人員需要創(chuàng)建一個(gè)過濾器,允許用戶對兩個(gè)日期之間的所有交易進(jìn)行排序。
通過比較日期,檢查一個(gè)日期是否在其他兩個(gè)日期之間
在 JavaScript 中,我們可以比較日期對象的兩個(gè)實(shí)例。當(dāng)我們比較 Date 對象的兩個(gè)實(shí)例時(shí),它會比較從 1970 年 1 月 1 日開始到這兩個(gè)日期的總毫秒數(shù)。
因此,我們可以像在 JavaScript 中比較數(shù)值一樣正常地比較兩個(gè)日期,并且可以確保一個(gè)日期位于其他兩個(gè)日期之間。
語法
用戶可以遵循以下語法來確保 JavaScript 中的一個(gè)日期介于兩個(gè)日期之間。
if (date1 < date2 && date2 < date3) { // date2 is between the date1 and date3 } else { // date2 is not between the date1 and date3 }
登錄后復(fù)制
在上面的語法中,用戶可以看到,如果date2 大于date1 并且date2 小于date3,則意味著date2 在date1和date3之間。
示例
在下面的示例中,我們使用 Date 對象的構(gòu)造函數(shù)創(chuàng)建了三個(gè)不同的時(shí)間戳。之后,我們使用上述語法中解釋的邏輯來檢查date2是否在date1和date3之間。
在輸出中,用戶可以觀察到date2位于date1和date3之間。
<html> <body> <h2><i>Comparing the dates</i> to check if one date is between two.</h2> <p id="output"> </p> <script> let output = document.getElementById("output"); let date1 = new Date(2020, 03, 11); let date2 = new Date(2022, 03, 12); let date3 = new Date(); if (date1 < date2 && date2 < date3) { output.innerHTML += date2 + " is between <br> " + date1 + " <br> and <br> " + date3; } else { output.innerHTML += date2 + " is not between the " + date1 + " <br> and <br>" + date3; } </script> </body> </html>
登錄后復(fù)制
從隨機(jī)日期字符串創(chuàng)建一個(gè)新日期,并比較它們
現(xiàn)在,我們考慮一下這樣的場景:我們沒有給出標(biāo)準(zhǔn)日期對象的時(shí)間戳,但是日期被格式化為字符串格式。因此,我們必須從日期字符串中提取年、月、日。之后,我們需要為從字符串中獲取的值創(chuàng)建一個(gè)標(biāo)準(zhǔn)時(shí)間戳,并像上一節(jié)中所做的那樣對它們進(jìn)行比較。
語法
當(dāng)給定隨機(jī)格式的字符串時(shí),用戶可以按照以下語法檢查一個(gè)日期是否介于兩個(gè)日期之間。
// splitting the dates let [year1, month1, date1] = prev_date.split(","); let [year2, month2, date2] = current_date.split(","); let [year3, month3, date3] = final_date.split(","); // creating new formatted dates prev_date = new Date(year1, month1 - 1, date1); current_date = new Date(year2, month2 - 1, date2); final_date = new Date(year3, month3 - 1, date3); if (prev_date < current_date && current_date < final_date) { // current_date is between the prev_date and final_date } else{ // current_date is not between the prev_date and final_date }
登錄后復(fù)制
在上面的語法中,我們使用了‘,’分隔符來分割字符串,但是用戶可以根據(jù)給定的日期字符串來進(jìn)行分割。之后,我們解構(gòu)了從 split 方法獲得的數(shù)組,并使用該值創(chuàng)建新的標(biāo)準(zhǔn)日期時(shí)間戳。
示例
在此示例中,我們采用了三個(gè)日期字符串。接下來,我們將它們分開,獲取年、月和日期值,并使用它們創(chuàng)建新日期。
之后,我們比較了新的時(shí)間戳,以確保 current_date 位于 prev_date 和 Final_date 之間。
<html> <body> <h3>Create a new date from <i> date string and compare them </i> to check if one date is between two</h3> <p id = "output"> </p> <script> let output = document.getElementById("output"); let prev_date = "2022,10,23"; let current_date = "2021,11,22"; let final_date = "2023,12,30"; let [year1, month1, date1] = prev_date.split(","); let [year2, month2, date2] = current_date.split(","); let [year3, month3, date3] = final_date.split(","); prev_date = new Date(year1, month1 - 1, date1); current_date = new Date(year2, month2 - 1, date2); final_date = new Date(year3, month3 - 1, date3); if (prev_date < current_date && current_date < final_date) { output.innerHTML += current_date + " is between <br>" + prev_date + "<br> and <br> " + final_date; } else { output.innerHTML += current_date + " is not between <br>" + prev_date + " <br> and <br> " + final_date; } </script> </body> </html>
登錄后復(fù)制
用戶學(xué)習(xí)了兩種方法來檢查日期是否在其他兩個(gè)日期之間。當(dāng)給定Date對象的標(biāo)準(zhǔn)時(shí)間戳?xí)r,用戶可以使用第一種方法;否則,用戶可以從日期字符串中提取不同的值,并使用它們創(chuàng)建日期對象的新實(shí)例并進(jìn)行比較。
以上就是如何在 JavaScript 中檢查一個(gè)日期是否在兩個(gè)日期之間?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!