gpt4 book ai didi

java - 计算时间表/剩余时间(Java)

转载 作者:行者123 更新时间:2023-12-01 11:34:47 25 4
gpt4 key购买 nike

我正在尝试计算公交车时刻表的剩余时间。因此,我将所有表列表存储在 ArrayList 中,并且我只想一次仅计算一个时间表的剩余时间。例如,假设列表有 8:00 和 8:15,当前时间为 7:55。我想要的是用 8:00 而不是 8:15 来计算剩余时间,而且如果当前时间是 8:01,则​​计算应该在 8:15 而不是 8:00 进行。如果你们帮助我(任何链接或示例方法),那就太好了。

最佳答案

很大程度上取决于您如何存储时间信息,例如,如果您使用诸如 DateLocalTime 之类的内容,则只需对 进行排序即可>时间列表并使用Collections.binarySearch查找合适的时间...

List<LocalTime> times = new ArrayList<>(25);
times.add(LocalTime.of(9, 0));
times.add(LocalTime.of(8, 45));
times.add(LocalTime.of(8, 30));
times.add(LocalTime.of(8, 15));
times.add(LocalTime.of(8, 0));
times.add(LocalTime.of(7, 45));
times.add(LocalTime.of(7, 30));
times.add(LocalTime.of(7, 15));
times.add(LocalTime.of(7, 0));

int result = Collections.binarySearch(times, LocalTime.of(7, 55), new Comparator<LocalTime>() {
@Override
public int compare(LocalTime o1, LocalTime o2) {

LocalTime startRange = o1.minusMinutes(15);
LocalTime endRange = o1;

if ((o2.equals(o1) || startRange.isBefore(o2)) && (o2.equals(o1) || o2.isBefore(o1))) {
return 0;
}
return o1.compareTo(o2);
}
});

if (result >= 0) {
System.out.println(times.get(result));
}

输出08:00

现在,

if ((o2.equals(o1) || startRange.isBefore(o2)) && (o2.equals(o1) || o2.isBefore(o1))) {

匹配一个确切的时间段(例如,7:45-8:00,包括在内),这可能不是您想要的(所以现在是 8:00,您可能错过了公共(public)汽车;))所以您可能会能够使用类似的东西

if (startRange.isBefore(o2) && o2.isBefore(o1)) {

例如,它将匹配 7:46-7:59(含)或根据您的需求进行组合...

关于java - 计算时间表/剩余时间(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com