簡體   English   中英

如何通過日期比較過濾js數組?

[英]how to filter a js array by date comparison?

我有一個 js 對象數組,每個對象都有一個 StartDate 屬性。 我需要按日期范圍過濾數組。 像這樣的東西:

const matchesByDate = supplierPricingInfo.filter(x => x.StartDate > Date("12/25/2019"))

我嘗試了上面的代碼行,並將 new 關鍵字放在 Date 構造函數的前面。 但是,這種方法不會返回任何結果,即使數組有一個 StartDate 為 01/01/2020 的項目。

那么,實現我在這里要做的事情的正確方法是什么? 我在我的項目中使用 dayjs npm 包,如果它可以用來幫助簡化事情的話。

Javascript 不提供您試圖以您正在使用的格式實現的功能。 相反,您可以使用 Date 對象提供的其他函數。

Javascript Date 對象有一個' getTime ' 函數,它返回紀元(UNIX 時間戳)。 您可以從兩個日期創建一個日期對象,並獲取它們的 UNIX 時間戳以進行比較。

let startDate = new Date("25/10/2019");
let tempDate = new Date("09/02/2020");

let isStartDateGreater = startDate.getTime() > tempDate.getTime();

// isStartDateGreater = false;

在你的情況下,你可以做

const matchesByDate = supplierPricingInfo.filter(x => new Date(x.StartDate).getTime() > new Date("12/25/2019").getTime())
var datesArray = [new Date(2019, 11, 26), new Date(2020, 1, 23), new Date(2002, 5, 23)];
var comparisonDateTime = new Date(2019, 11, 25).getTime();
var matches = _.filter(datesArray, d => d.getTime() > comparisonDateTime);
console.log(matches);

您可以使用 getTime() 方法獲取世界時並將其用作比較,然后使用下划線庫中的過濾器方法僅返回世界時大於您設置的世界時的日期。 在上面的示例中,我創建了三個示例日期,然后創建了一個用於過濾日期的比較時間。 然后我們使用 filter 方法並遍歷每個日期,並僅在其通用時間大於您使用的比較時間時才返回它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM