2015-11-12 2 views
0

Я посчитаю часы и минуты разных интервалов. Мой подход состоит в том, чтобы иметь длительность и добавлять друг к другу продолжительность существующего. Теперь мой вопрос заключается в том, как я могу, по крайней мере, преобразовать продолжительность в часы и время, чтобы результат был, например. 43:34 (43 часа и 34 минут)JodaTime - часы и минуты

Большое спасибо!

@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()); 
} 

[EDIT]

меня есть, например, это интервалы (даты не имеют никакого отношения, только время находится в фокусе):

08:30-12:00 
14:00-17:00 
13:00-18:00 

я его подвести итоги и результат должен быть в этом случае: 11:30

+0

Мне не совсем ясно, чего вы пытаетесь достичь - вы имеете в виду, что у вас уже есть продолжительность, и вы просто хотите думать об этом как о часах и минутах? Или вы изо всех сил пытаетесь получить нужную вам продолжительность? Можете ли вы опубликовать короткий, но * полный * пример, с ожидаемым выходом и фактическим выходом? –

ответ

0

ВИДЕТЬ Duration JavaDoc:

Продолжительность может быть преобразована в Period для получения значений полей. Это преобразование, как правило, приводит к потере точности.

Так продлить тестовый пример:

@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 мин. Таким образом, вы можете либо преобразовать свои длительности в периоды, либо просто работать с периодами, в зависимости от вашего варианта использования.

Смежные вопросы