Tengo un programa de itinerario de vuelo, donde tengo que llegar diferencia entre la salida y la hora de llegada. Consigo estos tiempos especificados como secuencia de los datos. Aquí está mi 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));
}
}
Salida:
176
-329
La primera vez que devuelve la diferencia 11:39-14:35 bien. Pero la segunda diferencia es sólo 5 horas mientras que debería ser de 19 horas. ¿Cómo puedo solucionar este problema, ¿qué estoy haciendo mal aquí?
Cualquier ayuda sería muy apreciada.
EDIT:. Estoy usando gráficas para almacenar mis datos en un ejemplo de una ruta más corta entre dos aeropuertos es la siguiente:
Route for Edinburgh to Sydney
1 Edinburgh, 1139, TK3245, Istanbul, 1435
2 Istanbul, 0906, TK4557, Singapore, 1937
3 Singapore, 0804, QF1721, Sydney, 1521
Estos son los 3 tramos que nos lleva desde EDI a Syd. El formato de la salida de arriba es (Ciudad, salida Hora, Vuelos, Destinos, Hora de llegada).
El número total de minutos en 24 horas es de 1440. Por eso, cuando la diferencia es inferior a cero (pero se necesita una positiva), entonces se debe añadir un día entero para su resultado:
int diff = MINUTES.between(arrival, a);
if (diff < 0) {
diff += 1440;
}
Usted puede lograr lo mismo usando la siguiente:
int diff = (MINUTES.between(arrival, a) + 1440) % 1440;