我将计算不同间隔的小时和分钟。 我的方法是持续时间并为现有持续时间添加另一个持续时间。 我现在的问题是如何至少将持续时间转换为小时和时间,以便结果如下: 43:34(43小时34分钟)
非常感谢!
@Test
public void shouldCalculateHoursOfWeekAverage() throws BusinessException {
final DateTime start1 = formatter.parseDateTime("02.10.2015 07:20");
final DateTime end1 = formatter.parseDateTime("02.10.2015 12:00");
final DateTime start2 = formatter.parseDateTime("02.10.2015 08:00");
final DateTime end2 = formatter.parseDateTime("02.10.2015 12:00");
final Duration duration1 = new Interval(start1, end1).toDuration();
final Duration duration2 = duration1.withDurationAdded(new Interval(start2, end2).toDuration(), 1);
System.out.println("duration2: " + duration2 + ", --> " + duration2.getStandardHours() + ":" + duration2.getStandardMinutes());
}
[编辑]
我有例如这个间隔(日期没有任何相关性,只有时间成为焦点):
08:30-12:00
14:00-17:00
13:00-18:00
我会总结一下,结果应该是这种情况: 11:30
答案 0 :(得分:0)
请参阅{{3}}:
可以将持续时间转换为{{3}}以获取字段值。这种转换通常会导致精度下降。
所以扩展你的测试用例:
@Test
public void shouldCalculateHoursOfWeekAverage() {
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm");
DateTime start1 = formatter.parseDateTime("02.10.2015 07:20");
DateTime end1 = formatter.parseDateTime("02.10.2015 12:00");
DateTime start2 = formatter.parseDateTime("02.10.2015 08:00");
DateTime end2 = formatter.parseDateTime("02.10.2015 12:00");
Duration duration1 = new Interval(start1, end1).toDuration();
Duration duration2 = duration1.withDurationAdded(new Interval(start2, end2).toDuration(), 1);
System.out.println("duration2: " + duration2 + ", --> " + duration2.getStandardHours() + ":" + duration2.getStandardMinutes());
// Convert to Period
Period period = duration2.toPeriod();
System.out.println("Period: " + period + ", --> " + period.getHours() + ":" + period.getMinutes());
}
打印
duration2: PT31200S, --> 8:520
Period: PT8H40M, --> 8:40
并且总持续时间/周期确实是8小时40分钟。 因此,您可以将持续时间转换为期间或仅使用期间,具体取决于您的使用案例。