我有兩個日期是 UTC
"2022-11-01T22:16:19.844Z" // <-- in the past but later in the day
"2022-11-08T20:16:19.844Z" // <--- in the future but earlier in the day
第一個日期是<第二個日期,但它是當天晚些時候......
我正在嘗試回傳一天中最早的日期,例如最少的小時和分鐘...我不想回傳過去的日期,只回傳一天中最早出現的日期
我努力了
const date_a = new Date("2022-11-01T22:16:19.844Z").getTime()
const date_b = new Date("2022-11-08T20:16:19.844Z").getTime()
//this is always comparing the ENTIRE date, which will return date_a as the lessor when in reality what I want is date_b because it is actually occuring earlier in the day...
uj5u.com熱心網友回復:
時間排序
在進行日期比較時,比較字串通常比對小時、分鐘、秒和毫秒進行數字比較更簡單。對于這個問題,我們可以比較每個日期的 UTC 時間字串,可以使用以下方法從日期決議:
.toISOString() --> "2022-11-10T20:16:19.843Z"
.split("T") --> ["2022-11-10", "20:16:19.843Z"]
.pop() --> "20:16:19.843Z"
然后我們使用.localeCompare()對時間字串進行排序并回傳陣列的第一個元素:
let value = dates.sort((a,b) =>
a.toISOString().split("T").pop().localeCompare(
b.toISOString().split("T").pop()
)
)[0];
通過使用不需要拆分和彈出步驟的.toTimeString()可以簡化代碼以用于本地時間。
片段
let dates = [
new Date("2022-11-10T20:16:19.843Z"),
new Date("2022-11-01T22:16:19.844Z"),
new Date("2022-11-08T20:16:19.844Z")
];
let value = dates.sort((a,b) =>
a.toISOString().split("T").pop().localeCompare(
b.toISOString().split("T").pop()
)
)[0];
console.log(value);
uj5u.com熱心網友回復:
您可以使用 Date.prototype.setYear()、setMonth() 和 set Day() 并將兩個日期的第一部分設定為 0,然后進行比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/526485.html
標籤:javascript日期
上一篇:獲取按專案組分組的專案數量總和
下一篇:有條件的按組的最后日期
