[Métodos] Obtener fecha y hora - Formatos de fechas - Conversiones (Parte II)

Obtener fecha y hora - Formatos de fechas


DateFormat


DateFormat es una clase abstracta para el formateo de fecha y hora de otras clases(Calendar-Date-String)

Habrá que instanciar un objeto de esta clase a través de su método getDateInstance() sin parámetros y/o con uno de los formatos que trae incluidos y/o un objeto Locale adecuado.
Dependiendo de la especificación geográfica, cultura y politica (objeto Locale) variará el formato de fecha.
Para estos casos, suelo usar el métodos sin parámetros, que tomará por defecto la posición y formato y además también crear el objeto Locale propio:

  DateFormat df0 = DateFormat.getDateInstance();

  Locale local = new Locale("es");
  DateFormat df1 = DateFormat.getDateInstance(DateFormat.LONG, local);

Formatos


Aun que esto varié enormemente dependiendo del lenguaje, para los casos sin parámetros(Default) y con el Locale en español los formatos serían:

Constante Formato Valor Ejemplo
default dd/MM/yyyy null 23/07/2016
DateFormat.LONG dd 'de' MMMM 'de' yyyy 1 23 de julio de 2016
DateFormat.MEDIUM dd-MMM-yyyy 2 23-jul-2016
DateFormat.SHORT dd/MM/yy 3 23/07/16

Conversiones



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
 // CREO UN OBJECTO DATE ACTUAL
 Date miDate = new Date();
 // CREO UN STRING DE OTRA FECHA CON EL FORMATO 'LONG'
 String miString = "16 de enero de 1989";

 // CREO UN 'LOCALE' Y UN 'DATEFORMAT'
 Locale local = new Locale("es");
 DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, local);

 // HAGO LAS CONVERSIONES
 String fechastr = df.format(miDate);
 Date fechadate = df.parse(miString);
 // OBTENGO UN CALENDARIO DE LA FECHA ACTUAL
 Calendar cal = df.getCalendar();

 // MUESTRO POR PANTALLA
 System.out.println("De string a Date: " + fechastr);
 System.out.println("De Date a String: " + fechadate);
 System.out.println("Objeto Calendar del momento " + cal.toString());

  De string a Date: 23 de julio de 2016
  De Date a String: Mon Jan 16 00:00:00 ARST 1989
  Objeto Calendar del momento java.util.GregorianCalendar[...]





SimpleDateFormat


SimpleDateFormat es sub-clase de DateFormat y clase concreta.
Ademas de poder un objeto de ella, en su constructor podemos pasarle el patron de fecha que deseamos obtener:

Patrones de Fecha y Hora


Patron de Letra Descripción Presentacion Ejemplos
G Designador de ERA Texto AD
y Año Año 1996; 96
Y Año Año 2009; 09
M Mes en el Año Mes July; Jul; 07
w Semana en el Año Número 27
W Semana en el Mes Número 2
D Dia en el Año Número 189
d Dia en el Mes Número 10
F Dia de la Semana en el Mes Número 2
E Nombre del Dia en la Semana Texto TuesDay; Tue
u Númerp de Dia de la Semana (1 = MonDay, ..., 7 = SunDay) Número 1
a Marca Am/pm Texto PM
H Hora en el Dia (0-23) Número 0
k Hora en el Dia (1-24) Número 24
K Hora en la marca am/pm (0-11) Número 0
h Hora en la marca am/pm (1-12) Número 12
m Minutos en la Hora Número 30
s Segundos en el Minutos Número 55
S MilliSegundos Número 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00

Para introducir los caracteres como texto los escapeamos con comillas simples, por ejemplo:

  • 25 de mayo de 1810
  • dd 'de' MMMM 'de' yyyy


Luego es exactamente igual que trabajar con DateFormat , salvo que esta vez creamos el objeto con su constructor pero y en el formato somos libre de crear como querramos que salga el String y/o venga.
También obviaremos la parte del objeto Locale.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 // CREAMOS FECHAS
 Date miDate = new Date();
 String miString = "16/01/1989";
 
 // CREAMOS EL FORMATEADOR
 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
 
 // CONVERSIONES
 String fechaString = sdf.format(miDate);
 Date fechaDate = sdf.parse(miString);
 Calendar cal = sdf.getCalendar();

 // SALIDA POR PANTALLA
 System.out.println(fechaString);
 System.out.println(fechaDate);
 System.out.println(cal);

No hay comentarios:

Publicar un comentario