[英]How to get date ranges from an array of static dates in jquery or javascript
[英]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.