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

标签 java java-8 java-time

我想获得基于当前时间的 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/

相关文章:

JavaFX WebView 不加载页面

Java 8 : How to create DateTimeFormatter with milli, 微秒还是纳秒?

java - 如何使用 java.time 将带有可选时间的日期时间输入字符串转换为 UNIX 时间

java - 如何使用 java.time 从带有年和周的字符串中解析日期

java - 按升序读取多个文件 文件名

java - 如何在没有数据对象模型的情况下比较android中的firebase内部子项?

java - 打印 JavaFX WebView

java - SMTP客户端Java程序

java - 在 Java 8 中,Executors.newWorkStealingPool() 是否也提供任务队列?

java - 如何动态地将谓词添加到列表中