我想解釋一下我今天遇到的問題。
我有一個看起來像這樣的陣列
[{status: "closed",createdAt: "2022-01-13T15:28:25.239Z"},{status: "closed",createdAt: "2022-01-10T15:28:25.239Z"},{status: "open",createdAt: "2021-11-25T15:28:25.239Z"}]
我過濾以僅檢索狀態為“已關閉”的資料
const countData = data?.filter(
(item) => item.status === "closed"
);
const count = countData?.length;
這很好用,它正確地將號碼回傳給我。
我想用 Luxon 添加一個新的過濾器。
我想用 luxon 取今天的日期,結果顯示與該日期對應的物件
const dateNow = DateTime.now().toISO();
console.log(dateNow)
2022-01-13T16:23:44.873 01:00
我該如何解決這個問題?
uj5u.com熱心網友回復:
如果要檢查給定的 Luxon DateTime 物件是否代表今天的同一天,可以使用hasSame傳遞date作為第二個引數
回傳此 DateTime 是否與另一個 DateTime 處于同一時間單位。此函式回傳的高階單位也必須相同
true。請注意,在此比較中忽略時區,比較本地日歷時間。如果需要,使用DateTime#setZone轉換日期之一。
在您的情況下,您可以使用以下代碼:
const DateTime = luxon.DateTime;
const input = [{
status: "closed",
createdAt: "2022-01-13T15:28:25.239Z"
}, {
status: "closed",
createdAt: "2022-01-10T15:28:25.239Z"
}, {
status: "open",
createdAt: "2021-11-25T15:28:25.239Z"
}, {
status: "closed",
createdAt: new Date().toISOString()
}];
const todayItems = input.filter(item => {
return DateTime.fromISO(item.createdAt).hasSame(DateTime.now(), 'day') && item.status == "closed";
});
console.log(todayItems)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/global/luxon.js"></script>
uj5u.com熱心網友回復:
Luxon 有一個功能,可以讓您在稱為 的引數的某個點獲取日期startOf。因此,您可以執行以下操作:
const todayDate = DateTime.now().startOf("day");
因此,您的todayDate變數將是您當前的日期,但時間為 00:00:00。
您可以在過濾器功能期間對元素進行轉換,以將它們與todayDate以下內容進行比較:
//Please consider that the example for today was at 2022-01-13
const array = [
{
name: "this is for today",
date: "2022-01-13T15:28:25.239Z"
},
{
name: "this was for yesterday",
date: "2022-01-12T15:28:25.239Z"
}];
const todayDate = DateTime.now().startOf("day");
const todayElements = array.filter((element) => {
return DateTime.fromISO(element.date).startOf("day").equals(todayDate);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410995.html
標籤:
上一篇:需要MYSQL資料庫查詢解決方案
下一篇:每月至每日價值-R
