📅  最后修改于: 2023-12-03 14:42:47.319000             🧑  作者: Mango
在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
枚举来指定要舍入的时间单元。最后,我们打印出每个舍入结果。
需要注意的是,如果要舍入的时间单元比持续时间的单位更小,则直接返回持续时间本身。例如,在上面的示例中,当我们将持续时间截断为天时,它返回了一个持续时间为零的对象。这是因为持续时间的最小单位是秒,而我们却试图将其舍入为天,这样无法除尽。