如果我使用 yyyy-mm-dd 格式的純日期字串定義日期范圍,則比較似乎可以在不使用Date物件的情況下正常作業:
const dateParts = '2021-12-15--2022-01-15'.split('--') // My date range
const startDate = dateParts.slice(0, 1) // '2021-12-15'
const endDate = dateParts.slice(1) // '2022-01-15'
const date = '2021-12-14'
// Test if date is within the range
console.log(date >= startDate && date <= endDate) // false
如果我想要的是確保我正在尋找的日期在范圍內,則在上面的示例中使用任何日期都將成功測驗。
為什么這是有效的?如果 javascript 在幕后將日期字串評估為數字,則這應該不起作用。是否可能只是隱含地假設它是一個日期而我不必使用new Date(date)...決議它們?
更新:我不是在尋找有關如何使用Date物件執行此操作的解決方案,我對以這種方式比較日期不起作用的示例更感興趣。
uj5u.com熱心網友回復:
您的代碼有效(或者如果它看起來像它的作業),因為它只是一個基本的字串比較而不是日期比較。要進行正確的日期比較,您需要進行正確的字串到日期的轉換,然后進行比較。
const dateParts = '2021-12-15--2022-01-15'.split('--') // My date range
const startDate = dateParts[0] // '2021-12-15'
const endDate = dateParts[1] // '2022-01-15'
const startDateArray = startDate.split("-").map(element => parseInt(element));
const endDateArray = endDate.split("-").map(element => parseInt(element));
const date = '2022-01-15'
const dateArray = date.split("-").map(element => parseInt(element));
// Test if date is within the range
console.log(new Date(dateArray[0], dateArray[1] - 1, dateArray[2]) >= new Date(startDateArray[0], startDateArray[1] - 1, startDateArray[2]) && new Date(dateArray[0], dateArray[1] - 1, dateArray[2]) <= new Date(endDateArray[0], endDateArray[1] - 1, endDateArray[2])) // false
uj5u.com熱心網友回復:
這應該可以解決您的問題
const dateParts = '2021-12-15--2022-01-15'.split('--'); // My date range
const startDate = dateParts[1]; // '2021-12-15'
const endDate = dateParts[0]; // '2022-01-15'
const date = '2021-12-10'
// Test if date is within the range
alert(date < startDate && date < endDate)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/385026.html
標籤:javascript 日期 比较
上一篇:在kotlin中將字串轉換為日期
