在 JavaScript 中,我們可以使用 Date() 對(duì)象來(lái)創(chuàng)建不同的時(shí)間戳。此外,我們可能需要使用 JavaScript 檢查一個(gè)日期是否介于兩個(gè)日期之間。
例如,我們希望根據(jù)日期為電子商務(wù)應(yīng)用程序中的訂單創(chuàng)建過(guò)濾器。因此,我們應(yīng)該能夠過(guò)濾用戶在日期輸入字段中輸入的兩個(gè)日期之間的所有訂單。
檢查兩個(gè)日期之間的另一個(gè)實(shí)際用例是在銀行應(yīng)用程序中。例如,在開(kāi)發(fā)銀行系統(tǒng)應(yīng)用程序時(shí),開(kāi)發(fā)人員需要?jiǎng)?chuàng)建一個(gè)過(guò)濾器,允許用戶對(duì)兩個(gè)日期之間的所有交易進(jìn)行排序。
通過(guò)比較日期,檢查一個(gè)日期是否在其他兩個(gè)日期之間
在 JavaScript 中,我們可以比較日期對(duì)象的兩個(gè)實(shí)例。當(dāng)我們比較 Date 對(duì)象的兩個(gè)實(shí)例時(shí),它會(huì)比較從 1970 年 1 月 1 日開(kāi)始到這兩個(gè)日期的總毫秒數(shù)。
因此,我們可以像在 JavaScript 中比較數(shù)值一樣正常地比較兩個(gè)日期,并且可以確保一個(gè)日期位于其他兩個(gè)日期之間。
語(yǔ)法
用戶可以遵循以下語(yǔ)法來(lái)確保 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ù)制
在上面的語(yǔ)法中,用戶可以看到,如果date2 大于date1 并且date2 小于date3,則意味著date2 在date1和date3之間。
示例
在下面的示例中,我們使用 Date 對(duì)象的構(gòu)造函數(shù)創(chuàng)建了三個(gè)不同的時(shí)間戳。之后,我們使用上述語(yǔ)法中解釋的邏輯來(lái)檢查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)在,我們考慮一下這樣的場(chǎng)景:我們沒(méi)有給出標(biāo)準(zhǔn)日期對(duì)象的時(shí)間戳,但是日期被格式化為字符串格式。因此,我們必須從日期字符串中提取年、月、日。之后,我們需要為從字符串中獲取的值創(chuàng)建一個(gè)標(biāo)準(zhǔn)時(shí)間戳,并像上一節(jié)中所做的那樣對(duì)它們進(jìn)行比較。
語(yǔ)法
當(dāng)給定隨機(jī)格式的字符串時(shí),用戶可以按照以下語(yǔ)法檢查一個(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ù)制
在上面的語(yǔ)法中,我們使用了‘,’分隔符來(lái)分割字符串,但是用戶可以根據(jù)給定的日期字符串來(lái)進(jìn)行分割。之后,我們解構(gòu)了從 split 方法獲得的數(shù)組,并使用該值創(chuàng)建新的標(biāo)準(zhǔn)日期時(shí)間戳。
示例
在此示例中,我們采用了三個(gè)日期字符串。接下來(lái),我們將它們分開(kāi),獲取年、月和日期值,并使用它們創(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í)了兩種方法來(lái)檢查日期是否在其他兩個(gè)日期之間。當(dāng)給定Date對(duì)象的標(biāo)準(zhǔn)時(shí)間戳?xí)r,用戶可以使用第一種方法;否則,用戶可以從日期字符串中提取不同的值,并使用它們創(chuàng)建日期對(duì)象的新實(shí)例并進(jìn)行比較。
以上就是如何在 JavaScript 中檢查一個(gè)日期是否在兩個(gè)日期之間?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!