📌  相关文章
📜  Java中的 Duration truncatedTo(TemporalUnit) 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:47.319000             🧑  作者: Mango

Java中的 Duration truncatedTo(TemporalUnit) 方法及示例

简介

在Java 8中,可以通过Duration类表示不可变的时间段。Duration类提供了一个truncatedTo(TemporalUnit unit)方法,该方法返回一个新的Duration对象,该对象将当前持续时间按指定的时间单元进行舍入。例如,如果指定以分钟为单位进行舍入,则将秒及更高的时间单元舍入为零。

方法签名
public Duration truncatedTo(TemporalUnit unit)
参数
  • unit - 要舍入的时间单元
返回值
  • 返回一个新的Duration对象,该对象是指定时间单元的舍入结果。
示例

下面是一些使用truncatedTo方法的示例。

import java.time.Duration;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        Duration duration = Duration.ofMinutes(125).plusSeconds(30);
        System.out.println("Duration: " + duration);

        Duration r1 = duration.truncatedTo(ChronoUnit.HOURS);
        System.out.println("Truncated to hours: " + r1);

        Duration r2 = duration.truncatedTo(ChronoUnit.MINUTES);
        System.out.println("Truncated to minutes: " + r2);

        Duration r3 = duration.truncatedTo(ChronoUnit.SECONDS);
        System.out.println("Truncated to seconds: " + r3);

        Duration r4 = duration.truncatedTo(ChronoUnit.DAYS);
        System.out.println("Truncated to days: " + r4);
    }
}

输出:

Duration: PT2H5M30S
Truncated to hours: PT2H
Truncated to minutes: PT125M
Truncated to seconds: PT750S
Truncated to days: PT0S

在此示例中,我们创建了一个Duration对象表示2小时5分钟30秒的时间段。然后,我们使用truncatedTo方法将该持续时间按小时,分钟,秒和天舍入。在每个操作中,我们使用ChronoUnit枚举来指定要舍入的时间单元。最后,我们打印出每个舍入结果。

需要注意的是,如果要舍入的时间单元比持续时间的单位更小,则直接返回持续时间本身。例如,在上面的示例中,当我们将持续时间截断为天时,它返回了一个持续时间为零的对象。这是因为持续时间的最小单位是秒,而我们却试图将其舍入为天,这样无法除尽。