Autor Tema: como cambiar formatos de horas?  (Leído 1851 veces)

Jp123

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
como cambiar formatos de horas?
« 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){
         
         
      }

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: como cambiar formatos de horas?
« Respuesta #1 en: 24 de Noviembre 2022, 20:54 »
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.

Código: [Seleccionar]
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);
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".