从列表获取最接近的时间戳

时间:2020-07-14 14:37:51

标签: flutter dart timestamp

如何从列表中获取最接近的时间戳?

我有一个时间戳列表,我想确定将来与当前时间戳最接近的时间戳。

我该如何实现?

1 个答案:

答案 0 :(得分:2)

像这样?我不确定您是如何表示时间戳的,所以我通过使用DateTime对象来举例:

void main() {
  final dateTimes = <DateTime>[
    DateTime(2020, 8, 1),
    DateTime(2020, 8, 5),
    DateTime(2020, 7, 13),
    DateTime(2020, 7, 18),
    DateTime(2020, 8, 15),
    DateTime(2020, 8, 20)
  ];
  final now = DateTime(2020, 7, 14);
  
  final closetsDateTimeToNow = dateTimes.reduce(
      (a, b) => a.difference(now).abs() < b.difference(now).abs() ? a : b);

  print(closetsDateTimeToNow); // 2020-07-13 00:00:00.000
}

请注意,该解决方案会在列表中找到壁橱时间戳,并查看过去和将来。