将两个 LocalTime 对象转换为 Duration 对象
Converting two LocalTime objects into a Duration object
Joda 是必须的,因为 JavaSE8 在此环境中不可用。
如何找到两个 LocalTime
对象之间的小时差异,并存储为 Duration
?尝试了以下但没有成功:
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 0);
Period shiftDuration = new Period(0,
endTime.getHourOfDay() - startTime.getHourOfDay(), 0, 0);
System.out.println(shiftDuration.getHours()); // expected 8, get 0.
您在错误的参数中提供了值。试试这个:
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 0);
Period shiftDuration = new Period(endTime.getHourOfDay() - startTime.getHourOfDay(), 0, 0, 0);
System.out.println(shiftDuration.getHours());
Period(int hours, int minutes, int seconds, int millis)
Create a period from a set of field values using the standard set of fields.
如果您特别想要这 2 个 LocalTime
实例之间的小时数,您可以使用 org.joda.time.Hours
class:
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
只关心小时数并丢弃其他字段。
Joda 是必须的,因为 JavaSE8 在此环境中不可用。
如何找到两个 LocalTime
对象之间的小时差异,并存储为 Duration
?尝试了以下但没有成功:
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 0);
Period shiftDuration = new Period(0,
endTime.getHourOfDay() - startTime.getHourOfDay(), 0, 0);
System.out.println(shiftDuration.getHours()); // expected 8, get 0.
您在错误的参数中提供了值。试试这个:
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(16, 0);
Period shiftDuration = new Period(endTime.getHourOfDay() - startTime.getHourOfDay(), 0, 0, 0);
System.out.println(shiftDuration.getHours());
Period(int hours, int minutes, int seconds, int millis)
Create a period from a set of field values using the standard set of fields.
如果您特别想要这 2 个 LocalTime
实例之间的小时数,您可以使用 org.joda.time.Hours
class:
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
只关心小时数并丢弃其他字段。