获取当前时间前后 12 小时

Get 12 hours before and after current time

我在处理 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 同一天)。这只是比较两次的一种非常糟糕的方法吗?还是我的数学对我正在尝试做的事情缺乏理解?

谢谢

使用 'new'(不是那么新)Java 8 次 API:

Instant now = Instant.now();
Instant hoursAfter = now.plus(12, ChronoUnit.HOURS);
Instant hoursBefore = now.minus(12, ChronoUnit.HOURS);

首先,在java.time.LocalTime上进行这种操作是行不通的!或者至少只有当时间是“12:00:00”时……

那是因为当您从任何其他时间 add/substract 12 小时后,您将有一个 over-/underflow。

所以你的起点应该是 java.time.LocalDateTime(至少,尽管我会选择 java.time.Instant)。现在你可以处理 over-/underflow,因为你将在增加或减少 12 小时时得到另一天。

如何工作如 所示:LocalDateTime 允许几乎与 Instant 相同的操作。