我想获得基于当前时间的 15 分钟时间范围。
例如:
时间范围是每 15 分钟
。
即 12 比 1 分为四个时间段 [ 12:00 到 12:15, 12:16 到 12:30, 1:31 到 12:45, 12:46 到 1:00]
如果当前时间是 12:34
意味着,我需要将时间范围返回为 12:31 到 12:45
我们可以使用 Java 8 日期和时间 API 轻松完成吗?
最佳答案
您可以创建一个 TemporalAdjuster
来计算当前 15 分钟周期的结束时间,并通过移除 14 分钟来计算该周期的开始时间。
可能看起来像这样:
public static void main(String[] args) {
LocalTime t = LocalTime.of(12, 34);
LocalTime next15 = t.with(next15Minute());
System.out.println(next15.minusMinutes(14) + " - " + next15);
}
public static TemporalAdjuster next15Minute() {
return (temporal) -> {
int minute = temporal.get(ChronoField.MINUTE_OF_DAY);
int next15 = (minute / 15 + 1) * 15;
return temporal.with(ChronoField.NANO_OF_DAY, 0).plus(next15, ChronoUnit.MINUTES);
};
}
输出 12:31 - 12-45
。
注意:我不确定它在 DST 更改时的表现如何 - 有待测试。
关于java - 根据当前时间获取特定的 15 分钟时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439444/