获取当前时间前后 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
相同的操作。
我在处理 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
相同的操作。