【发布时间】:2021-04-14 06:30:45
【问题描述】:
我在 Java 中处理时间时遇到问题。比较现在和前后12小时
的时间,我真的不明白如何有效解决我从 API 获得一组节目的开始时间,然后将该开始时间与 LocalTime.now() 进行比较。它看起来像这样:
SimpleDateFormat sdt = new SimpleDateFormat("HH:mm:ss");
String temp = sdt.format(Local.time(now));
LocalTime secondTime = LocalTime.parse(parts1[0]);
LocalTime firstTime = LocalTime.parse(temp);
int diff = (int) ((MINUTES.between(firstDay, secondDay) + 1440) % 1440);
if(diff <= 720){
return true;
}
我的想法是,如果两次之间的差异小于 720 分钟(12 小时),我应该得到正确的输出。这适用于现在之前的 12 小时。我想我可能需要交换.between 的参数,才能获得另一半。这完全是错误的(如果现在的时间是 15:00:00,它将接受所有时间,直到同一天的 22:00:00)。这只是比较两次的一种非常糟糕的方式吗?还是只是我的数学对我正在尝试做的事情缺乏理解?
谢谢
【问题讨论】:
-
您为什么不直接取开始日期并从中添加/减去 12 小时,以获得您想要与当前时间进行比较的范围?
-
你不能用
LocalTime#minusHours吗? -
你应该使用DateTimeFormatter类而不是
SimpleDateFormat类。 -
嗯,其实大牛说的也是我的意思。只需使用适当的方法来增加和减少小时数。
-
@OleV.V 对不起。我遇到的问题是我从 API 获得了节目的开始时间和日期。我想看看那个时间和日期是否发生在从现在到现在之后的 12 小时之间。一个更明确的问题可能是如何知道时间和日期是否在 24 小时间隔之间?希望这能让我的问题更清楚