根据当前时间获取特定的15分钟时间范围

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轻松完成这项工作吗?

ass*_*ias 5

您可以创建一个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更改方面的表现如何 - 要进行测试.