将两个LocalTime对象转换为Duration对象

时间:2017-08-11 15:51:05

标签: java jodatime datediff

Joda是必须的,因为Java SE8在这种环境中不可用。

如何查找两个Message个对象之间的小时差异,以LocalTime存储?尝试以下没有运气:

Duration

1 个答案:

答案 0 :(得分:1)

如果您特别想要这两个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只关注小时数并丢弃其他字段。