我有一個像這樣的物件
var object = {
"Fajr": "04:29 (WIB)",
"Sunrise": "05:39 (WIB)",
"Dhuhr": "11:43 (WIB)",
"Asr": "14:48 (WIB)",
"Sunset": "17:48 (WIB)",
"Maghrib": "17:48 (WIB)",
"Isha": "18:53 (WIB)",
"Imsak": "04:19 (WIB)",
"Midnight": "23:43 (WIB)",
"Firstthird": "21:45 (WIB)",
"Lastthird": "01:42 (WIB)"
}
我想使用時刻差異https://momentjs.com/docs/#/displaying/difference/。但是在搜索了幾個小時之后,我不知道如何從現在開始獲得最近的時間。
例如,如果現在的時間是 11:00,那么該物件的下一個時間將是 11:43。我如何做到這一點?
uj5u.com熱心網友回復:
- 從每個條目中決議出時間并對結果進行排序
- 抓住現在之后的第一個
- 如果沒有找到,請從排序結果中獲取第一個,因為它表示第二天
var object = {"Fajr":"04:29 (WIB)","Sunrise":"05:39 (WIB)","Dhuhr":"11:43 (WIB)","Asr":"14:48 (WIB)","Sunset":"17:48 (WIB)","Maghrib":"17:48 (WIB)","Isha":"18:53 (WIB)","Imsak":"04:19 (WIB)","Midnight":"23:43 (WIB)","Firstthird":"21:45 (WIB)","Lastthird":"01:42 (WIB)"};
const matcher = /\d :\d /;
const parsed = Object.entries(object)
.map(([key, time]) => {
const [hour, minute] = time.match(matcher)[0].split(":").map(Number);
const date = new Date();
date.setHours(hour, minute, 0, 0);
return { key, date };
})
.sort((a, b) => a.date - b.date);
const now = new Date();
const {key: next} = parsed.find(({ date }) => now <= date) ?? parsed[0];
console.log("next:", next, object[next]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513098.html
上一篇:將月份名稱轉換為完整日期熊貓
下一篇:您可以在查詢中拆分列嗎
