Foros del Web » Programación para mayores de 30 ;) » Java »

Cambiar formato de hora 24 a 12.

Estas en el tema de Cambiar formato de hora 24 a 12. en el foro de Java en Foros del Web. Estoy haciendo un código que al introducir una hora, la pase de formato 24h a 12h, pero me he quedado atascado en el proceso. Aquí ...
  #1 (permalink)  
Antiguo 13/02/2014, 02:14
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Cambiar formato de hora 24 a 12.

Estoy haciendo un código que al introducir una hora, la pase de formato 24h a 12h, pero me he quedado atascado en el proceso. Aquí os dejo la parte del código que se encarga de la función.

Código:
public static void imprimir12H(ArrayList <Reloj> Horas){
        
        int i=0,h=0;

        Iterator it = Horas.iterator(); 
        
            
        
        if (!it.hasNext()){
            System.out.println("No hay horas almacenadas."+"\n");
        }
        else{
         while (it.hasNext())
         {
            it.next();
            i=i+1;
            h=((int)Horas.get(i).hora);
            h=h-12;
            
            System.out.println("Tiempo nº: " +(i)                      +"\n"+
                               "Hora:   " +Horas.get(i).hora    +"\n"+
                               "Minutos: " +Horas.get(i).minutos +"\n"+
                               "Segundos: " +Horas.get(i).segundos  +"\n\n");
            i++;
         }
        }
    
    }
Si necesitáis el código entero, lo subo o pongo el resto del mismo, lo que creáis conveniente.
  #2 (permalink)  
Antiguo 13/02/2014, 02:17
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Cambiar formato de hora 24 a 12.

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
Date now = new Date();
System.out.println(sdf.format(now));
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 13/02/2014, 02:25
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Cambiar formato de hora 24 a 12.

Voy a poner todo el código para que quede más claro lo que estoy preguntando.

Clase main:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reloj;

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author Joan
 */
public class Aplicacion {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner teclado=new Scanner(System.in);
        
        
        ArrayList <Reloj> Horas = new  ArrayList <Reloj>();

        int op=-1;
        while (op!=0)
        {
            
            do{

System.out.println("\n"+"        MENU        ");
verMenu();
op=teclado.nextInt();


switch(op){

                case 1: Reloj.ponerEnHora(Horas);
                        break;

                case 2: Reloj.imprimir24H(Horas);
                        break;

                case 3: Reloj.imprimir12H(Horas);
                        break;

                //case 4: Reloj.MostrarPersona(Horas);
                        //break;

                case 0: System.out.println("Se ha cerrado el programa.");
                        break;
    
default: System.out.println("Error" ); break;

}
}while(op!=0);
            
    }

}
    public static void verMenu(){
         System.out.println("1.Poner hora");
         System.out.println("2.Mostrar hora en formato 24");
         System.out.println("3.Mostrar hora en formato 12");
         System.out.println("4.Mostrar Persona");
         System.out.println("0.Salir");
         
   }
}
Clase reloj:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reloj;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 *
 * @author Joan
 */
public class Reloj {
    
    int hora=0;
    int minutos=0;
    int segundos=0;
    
     public static void ponerEnHora(ArrayList <Reloj> Horas){
        Reloj tiempo;

        tiempo=new Reloj();
        
        Scanner teclado = new Scanner(System.in);

        System.out.println("Introduce hora: ");
        tiempo.hora=teclado.nextInt();
        
        System.out.println("Introduce minutos: ");
        tiempo.minutos=teclado.nextInt();
        
        System.out.println("Introduce segundos: ");
        tiempo.segundos=teclado.nextInt();

        Horas.add(tiempo);
    }
     
    public static void imprimir24H(ArrayList <Reloj> Horas){
        
        int i=0;

        Iterator it = Horas.iterator(); //Porque utilizar esto --> http://goo.gl/EfvDx0
        if (!it.hasNext())
            System.out.println("No hay horas almacenadas."+"\n");
        else
         while (it.hasNext())
         {
            it.next();
            System.out.println("Tiempo nº: " +(i+1)                      +"\n"+
                               "Hora:   " +Horas.get(i).hora    +"\n"+
                               "Minutos: " +Horas.get(i).minutos +"\n"+
                               "Segundos: " +Horas.get(i).segundos  +"\n\n");
            i++;
         }
    
    }
    
    public static void imprimir12H(ArrayList <Reloj> Horas){
        
        int i=0,h=0;

        Iterator it = Horas.iterator(); //Porque utilizar esto --> http://goo.gl/EfvDx0
        
            
        
        if (!it.hasNext()){
            System.out.println("No hay horas almacenadas."+"\n");
        }
        else{
         while (it.hasNext())
         {
            it.next();
            i=i+1;
            h=((int)Horas.get(i).hora);
            h=h-12;
            
            System.out.println("Tiempo nº: " +(i)                      +"\n"+
                               "Hora:   " +Horas.get(i).hora    +"\n"+
                               "Minutos: " +Horas.get(i).minutos +"\n"+
                               "Segundos: " +Horas.get(i).segundos  +"\n\n");
            i++;
         }
        }
    
    }
    
}
  #4 (permalink)  
Antiguo 13/02/2014, 04:39
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Cambiar formato de hora 24 a 12.

Le restas 12 a las horas. Si da un número menor que 0 o igual a 12 lo consideras AM y dejarias en primer caso El numero de horas original y en el segundo el valor 12.

Si la resta es cero dejas el original y lo consideras PM, y para numeros entre 0 y 11 tb será PM y utlizando el valor de la resta.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 17/02/2014, 05:52
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Cambiar formato de hora 24 a 12.

¿Del modo que esta hecho, le ves algún error? Me da problemas con la variable "h" en el método de "imprimir12H".
  #6 (permalink)  
Antiguo 18/02/2014, 04:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Cambiar formato de hora 24 a 12.

Prueba con

h=Integer.parseInt(Horas.get(i).hora);

o con

h=(int)(Horas.get(i).hora);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: arraylist, horas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:10.