代码对比
✕ Pre-Java 8
// How many days between two dates?
long diff = date2.getTime()
- date1.getTime();
long days = diff
/ (1000 * 60 * 60 * 24);
// ignores DST, leap seconds
✓ Java 8+
long days = ChronoUnit.DAYS
.between(date1, date2);
Period period = Period.between(
date1, date2);
Duration elapsed = Duration.between(
time1, time2);
发现此代码有问题? 告诉我们。
为什么现代方式更好
类型安全
Duration 用于时间,Period 用于日期——不会混淆。
自我描述
Duration.ofDays(7) 比 7 * 24 * 60 * 60 * 1000L 更清晰。
不可变
时间量是值类型——不能意外修改。
旧方式
毫秒数学
现代方式
Duration / Period
自 JDK
8
难度
入门
JDK 支持
Duration 和 Period
可用
自 JDK 8 起广泛可用(2014 年 3 月)
工作原理
Duration 用于基于时间的量(小时、分钟、秒)。Period 用于日期量(年、月、日)。两者都是不可变的,并且支持算术运算。
相关文档