Sha*_*kar 4 java java-8 java-time
我想根据当前时间得到15分钟的时间表.
例如:
时间表适用于every 15 minutes.
即12比1被分成四个时间帧 [ 12:00 to 12:15, 12:16 to 12:30, 1:31 to 12:45, 12:46 to 1:00]
如果当前时间是12:34平均值,我需要返回时间帧12:31 to 12:45
我们可以使用Java 8 Date和Time 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);
};
}
Run Code Online (Sandbox Code Playgroud)
哪个输出12:31 - 12-45.
注意:我不确定它在DST更改方面的表现如何 - 要进行测试.