Duration
只能处理固定长度的时间段,例如“小时”,“分钟”,“秒”,“天”(其中它假设每天正好24小时)。不能将“月”与 一起使用,因为月的长度各不相同。Duration
Period
- 其他常见实现 - 分别表示年,月和日。TemporalAmount
我个人会推荐:
- 如果您事先知道该单位,请使用适当的方法,例如.这几乎很容易阅读。
plusXxx
time.plusMinutes(10)
- 当您尝试表示“逻辑”日历金额时,请使用
Period
- 当您尝试表示“固定长度”金额时,请使用
Duration
下面是一个示例,说明可以在哪里和可以不同:Period
Duration
import java.time.*;
public class Test {
public static void main(String[] args) {
ZoneId zone = ZoneId.of("Europe/London");
// At 2015-03-29T01:00:00Z, Europe/London goes from UTC+0 to UTC+1
LocalDate transitionDate = LocalDate.of(2015, 3, 29);
ZonedDateTime start = ZonedDateTime.of(transitionDate, LocalTime.MIDNIGHT, zone);
ZonedDateTime endWithDuration = start.plus(Duration.ofDays(1));
ZonedDateTime endWithPeriod = start.plus(Period.ofDays(1));
System.out.println(endWithDuration); // 2015-03-30T01:00+01:00[Europe/London]
System.out.println(endWithPeriod); // 2015-03-30T00:00+01:00[Europe/London]
}
}
在你真正需要之前,我不会担心效率 - 在这一点上你应该有一个基准测试,这样你就可以测试不同的选项。