jueves, 16 de mayo de 2013

[JAVA] Como dar formato a las fechas en java

Para utilizar el SimpleDateFormat en java, se crea un nuevo objeto de este tipo con esta sintaxis:
 
 import java.text.SimpleDateFormat;  
 SimpleDateFormat sdf = new SimpleDateFormat(variable_string_con_el_formato);  

De manera que después cualquier objeto Date se puede parsear a formato String y viceversa. 
 
Ejemplos: 
 
Declarar el objeto simple format para el formato de fecha DD-MM-YYYY:
 
 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  

Convertir la fecha actual a este formato en String:

 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  
 Date fechaActual = new Date();  
 String fechaConFormato = sdf.format(fechaActual);  

Convertir un campo de tipo String a formato Date: 
 
 import java.text.ParseException;  
 import java.text.SimpleDateFormat;  
 import java.util.Date;  
 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  
 try{  
   Date nuevaFecha = sdf.parse("01-11-1987");  
 }catch(ParseException pe){  
 }  

Posibles formatos de fecha aceptados por el objeto:

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y12px Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time PST GMT-08:00
Z Time zone RFC 822 time zone -0800

Recuperado el 20-Set-2011 de http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

5 comentarios:

  1. Hola:

    Tengo este formato de fecha y hora: 2016/7/20 12:24
    Lo tengo en una variable String que se llama fechaDeAlta.

    ¿Cómo cambio de formato de String a Date?

    Un cordial saludo.

    ResponderBorrar
    Respuestas
    1. Sería de esta forma:

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
      try {
      Date nuevaFecha = sdf.parse("2016/7/20 2:24");

      System.out.println(nuevaFecha);
      } catch (ParseException pe) {
      pe.printStackTrace();
      }

      Eso tomando en cuenta que la hora está en formato de 24 horas y que comienza de las 0 a 23 horas, si no reemplazar la HH por kk para formato de 24 horas que comienza de 1 a 24 horas, y si es formato de 12 horas sería reemplazar HH por KK que comienza de 0 a 11 horas o hh para un formato que empieza 1 a 12 horas.

      Cualquier consulta con mucho gusto.

      Saludos

      Borrar
  2. Hola:

    Haz puesto est: Date nuevaFecha = sdf.parse("2016/7/20 2:24");

    Precisamente ese es el formato que debo leer: 2016/7/20 2:24

    Antes que nada, debo coger ese formato de la fecha de la máquina y luego convertirlo tal como lo haces arriba. Lo que arriba lo tienes prestablecido en una variable.

    Quiero tener la fecha/hora autmáticamente del propio PC en local y convertirlo como haces arriba.

    Espero que se entienda lo que quiero decir.

    ¿Cómo se hace?

    Muchas gracias por todo, campeón. ;)

    ResponderBorrar
    Respuestas
    1. Para obtener la fecha de la computadora solamente debes crear una nueva clase date:

      //Con esto se obtiene la hora y fecha actual de tu equipo
      Date horaFechaActual = new Date();

      //Si se quiere imprimir el resultado en un el formato que indicas se convierte de la siguiente manera:

      //Simplemente se va a establecer el formato para mostrar
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");

      //Se convierte el tipo Date con la hora de tu máquina a un formato String para imprimirlo con el formato que deseas:
      String fechaConFormato = sdf.format(horaFechaActual);

      //Se imprime el String para ver la hora con el formato deseado:
      System.out.println(fechaConFormato);

      El ejemplo que te respondí anteriormente es si tienes una fecha en una variable String y lo quieres convertir a Date, le especificas con el SimpleDateFormat, en qué formato viene el String para que se pueda convertir.

      Espero poder ayudarte y disculpa la demora me encontraba de paseo jeje

      Saludos

      Borrar
  3. Hola tengo una duda.. tengo una fecha en formato string de esta manera.. "26 DE JULIO DE 2016" y necesito pasarlo a un formato 26/07/2016. Agradeceria mucho tu ayuda. Saludos!!

    ResponderBorrar