LocalTime () diferença entre dois tempos

Naeem Khan:

Eu tenho um programa itinerário de vôo, onde eu preciso para obter diferença entre partida e hora de chegada. Recebo estes tempos especificados como cordas a partir dos dados. Aqui está o meu problema:

import static java.time.temporal.ChronoUnit.MINUTES;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class test2 {
public static void main(String[] args) {

    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("HHmm");
    LocalTime departure = LocalTime.parse("1139", dateFormat);
    LocalTime arrival = LocalTime.parse("1435", dateFormat);
    LocalTime a = LocalTime.parse("0906", dateFormat);
    System.out.println(MINUTES.between(departure, arrival));
    System.out.println(MINUTES.between(arrival, a));
}
}

Resultado:

176
-329

A primeira vez que retorna a diferença 11:39-14:35 muito bem. Mas a segunda diferença é de apenas 5 horas, enquanto que deve ser 19 horas. Como posso corrigir isso, o que estou fazendo de errado aqui?

Qualquer ajuda seria muito apreciada.

EDIT:. Estou usando gráficos para armazenar meus dados em Um exemplo de um caminho mais curto entre dois aeroportos é assim:

Route for Edinburgh to Sydney
1 Edinburgh, 1139, TK3245, Istanbul, 1435
2 Istanbul, 0906, TK4557, Singapore, 1937
3 Singapore, 0804, QF1721, Sydney, 1521

Estes são os 3 voos que nos leva de EDI para SYD. O formato da saída acima é (Cidade, Horário de Partida, Flight No., Destino, Hora de chegada).

ETO:

O número total de minutos em 24 horas é de 1440. Então, quando a diferença é inferior a zero (mas você precisa de uma forma positiva), então você deve adicionar um dia inteiro para o seu resultado:

int diff = MINUTES.between(arrival, a);
if (diff < 0) {
    diff += 1440;
}

Você pode conseguir a mesma coisa usando o seguinte:

int diff = (MINUTES.between(arrival, a) + 1440) % 1440;

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=177578&siteId=1
Recomendado
Clasificación