簡體   English   中英

如何從一系列日期中獲取最新日期? -Javascript / Typescript

[英]How could I get the latest date from an array of dates? - Javascript/Typescript

我有這樣的日期數組

arr = ["2018-08-01T15:16:34.791Z","2018-08-01T15:16:34.791Z","2018-08- 
01T15:16:34.791Z"]

因此,我嘗試將這些日期轉換為時間:

convertedArr = arr.map( payment => {
    var converted
    converted = new Date(payment.date_updated).getTime()
    return converted
  })

-然后將它們整理出來,並通過另一個函數獲得最多的時間:

getLatestPayment(convertedArr){

const sortFromHighest = arr => {
  return arr.sort( (a,b) => { return a < b } )
}
var convertedArr = convertedArr
convertedArr = sortFromHighest(convertedArr)
convertedArr = convertedArr.map( elem =>{
  new Date(elem)
})

return paymentsArr[0]

}

然后我得到一個未定義的值,因為我不能這樣做將日期從時間重新轉換回日期,是否有一種實際的方法可以從時間獲取日期? 或不同的解決方案? 提前致謝

在排序之前,只需將它們保留為Date對象即可; 不要在它們上調用getTime() ,因為您已經可以將<> Dates進行比較

如果您希望原始字符串值可以在排序器中創建日期對象並跳過映射

 const arr = ["2018-08-01T15:16:34.791Z","2018-08-01T15:16:34.791Z","2018-08-01T15:16:34.791Z"]; const getLatest = (arr) => arr.sort((a,b) => new Date(b) - new Date(a))[0]; console.log(getLatest(arr)) 

您還可以使用functional更多的鏈接方法:

 var arr = ["2011-08-01T19:16:34.791Z","2018-08-01T11:11:34.791Z","2012-08-01T15:16:34.791Z"] console.log(arr.map((x) => new Date(x)).sort().slice(-1)) 

但是,對於非常大的陣列,其性能會降低。

鑒於您具有UTC ISO 8601字符串,它們將作為字符串排序。 因此,只需對它們進行排序即可,並根據需要的最舊或最新日期來獲取第一個或最后一個元素。

如果希望將結果作為日期,則只需轉換最后一個(但請注意為什么Date.parse會給出錯誤的結果?

 var arr = [ "2018-08-01T15:16:35.791Z", "2018-08-01T15:16:34.791Z", "2018-08-05T15:16:34.791Z", "2018-08-02T15:16:34.791Z" ]; console.log('Oldest: ' + arr.sort().slice(0,1)); console.log('Newest: ' + arr.sort().slice(-1)); console.log('Newest: ' + new Date(arr.sort().slice(-1)).toString()); 

暫無
暫無

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

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