Foros aprenderaprogramar.com
Aprender a programar => De todo un poco... => Mensaje iniciado por: Jp123 en 24 de Noviembre 2022, 17:54
-
Holap, en esta nueva incógnita no he hallado como puedo cambiar una hora ingresada en formato de 12 horas y cambiarla a hora militar. (Java)
Si pudieran ayudarme se los agradecería mucho.
public void impHora24(){
if (hora>=0 && (hora<=24)){
System.out.println("La hora nueva es: "+hora+":"+minutos+":"+segundos+" en formato militar");
}else {
hora = hora+12;
System.out.println("La hora nueva es: "+hora+":"+minutos+":"+segundos+" hora militar");
}
}
public void amPm(int hora, int minutos, int segundos){
}
-
Hola.
Aquí la cuestión es que el usuario, además de las horas y minutos, tiene que proporcionarte el meridiano
Es decir, si yo en formato 12 horas te digo que son las 04:00, pues solo con eso tú no puedes saber si son las cuatro de la mañana, o son las cuatro de la tarde.
Necesariamente tengo que decirte si esa hora es "anterior al meridiano"(am) o posterior(pm) para poder hacer la conversión al formato militar.
Entonces, si te digo que son las 04:00pm, ahora sí sabes perfectamente que son las cuatro de la tarde y que por tanto en hora militar serían las 16:00.
Así que ese dato has de pedirlo al usuario y así poder convertir a hora militar.
Si te dice que es am, entonces solo tienes que cambiar la hora si es valor 12, porque en formato militar será las 00.
Si te dice que es pm, entonces es al contrario. La única hora que no cambiará es el valor 12.
A todas las demás, habrá que sumarle +12 para hacer la conversión.
Prueba de nuevo a crear un método teniendo en cuenta este valor, a ver si se te ocurre la lógica necesaria.
Yo igualmente te dejo aquí un ejemplo resuelto, por si quieres consultarlo. Pero mejor si primero haces tú un intento, te salga bien o no.
Un saludo.
public class Main {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.println("Introduzca tiempo en formato 12 horas");
System.out.print("Horas: ");
int hora = Integer.parseInt(teclado.nextLine());
System.out.print("Minutos: ");
int min = Integer.parseInt(teclado.nextLine());
System.out.print("Meridiano(am/pm): ");
String merid = teclado.nextLine();
teclado.close();
System.out.println();
imprimirHoraMilitar(hora, min, merid);
}
private static void imprimirHoraMilitar(int horas, int minutos, String meridiano) {
if(meridiano.toLowerCase().equals("am")) {
if (horas == 12)
horas = 0; //Son las 00 horas
}
else { //PM
if (horas != 12)
horas += 12;
}
//Resultado
System.out.printf("Hora militar: %02d:%02d", horas, minutos);
}
}