Duration 和 Period
# Duration 和 Period
Duration
:用小时、分钟和秒数表示两个时刻之间的时间间隔
Period
:用月份和天数表示两个日期之间的天数
# 入门案例
LocalDateTime start = LocalDateTime.of(2022, 5, 21, 0, 0, 0);
LocalDateTime end = LocalDateTime.of(2022, 5, 22, 8, 25, 30);
Duration d = Duration.between(start, end);
System.out.println("Duration: "+ d); // PT32H25M30S mean 32hour, 25min and 30sec
LocalDate startDay = LocalDate.of(2022,5,21);
LocalDate endDay = LocalDate.of(2022,12,22);
Period p = startDay.until(endDay);
System.out.println(p); // P7M1D, mean 7 month and 1 day
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Duration
和 Period
的表示方法也符合 ISO 8601 的格式,它以 P...T...
的形式表示,P...T
之间表示日期间隔,T
后面表示时间间隔。如果是 PT...
的格式表示仅有时间间隔。
Period
也可以直接利用 ofXxx()
或者 parse()
方法创建 Duration
:
Duration d1 = Duration.ofHours(10); // 10 hours
Duration d2 = Duration.parse("P1DT2H3M"); // 1 day, 2 hours, 3 minutes
1
2
2
# 其他注意事项
这里的差值可能是负的,例如被比较的对象在比较对象之前。我们可以试着打印一下,可以看到有个减号 -
,例如:
LocalDateTime start = LocalDateTime.of(2022, 5, 21, 0, 0, 0);
LocalDateTime end = LocalDateTime.of(2022, 5, 22, 8, 25, 30);
Duration d = Duration.between(end, start);
System.out.println("Duration.between(end, start): " + d); // PT32H25M30S mean 32hour, 25min and 30sec
1
2
3
4
2
3
4
Period 同理:
LocalDate startDay = LocalDate.of(2022, 5, 21);
LocalDate endDay = LocalDate.of(2022, 12, 22);
Period p = endDay.until(startDay);
System.out.println("endDay.until(startDay): " + p); // P-7M-1D
1
2
3
4
2
3
4
上次更新: 2024/10/1 16:19:31