我有一系列这样的日期
#!/bin/bash
num=0
for file in *.txt ; do
twarc hydrate "$(file)" > tweets"$(num)".jsonl
num=$(( num + num ))
done
所以我尝试将这些日期转换为时间:
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
})
}
然后,我得到一个未定义的值,因为我无法执行此操作,因此无法将时间从日期转换回日期,是否有实际方法可以使时间从日期获取?或不同的解决方案?预先感谢
答案 0 :(得分:0)
在排序之前,只需将它们保留为Date对象即可;不要在它们上调用getTime()
,因为您已经可以将日期与<
和>
答案 1 :(得分:0)
如果您希望原始字符串值可以在排序器中创建日期对象并跳过映射
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))
答案 2 :(得分:0)
您还可以采用更多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))
但是对于非常大型阵列而言,性能会较差。
答案 3 :(得分:0)
鉴于您拥有UTC ISO 8601字符串,它们将作为字符串排序。因此,只需对它们进行排序即可,并根据需要的最旧或最新日期来获取第一个或最后一个元素。
如果要将结果作为日期,只需转换最后一个(但请注意Why does Date.parse give incorrect results?
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());