如果您特别想知道这 2 个 LocalTime 实例之间的小时数,您可以使用 org.joda.time.Hours 类:
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 0);
int hours = Hours.hoursBetween(startTime, endTime).getHours();
结果将是8。
您也可以使用org.joda.time.Period:
Period period = new Period(startTime, endTime);
System.out.println(period.getHours()); // 8
结果也是8。
它们之间的区别在于 Hours 对值进行四舍五入,但 Period 不进行四舍五入。示例:
// difference between 08:00 and 16:30
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 30);
Period period = new Period(startTime, endTime);
System.out.println(period); // PT8H30M
System.out.println(period.getHours()); // 8
System.out.println(period.getMinutes()); // 30
int hours = Hours.hoursBetween(startTime, endTime).getHours();
System.out.println(hours); // 8
Period 保留所有字段(8 小时 30 分钟),而 Hours 只关心小时并丢弃其他字段。