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:
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);
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[...]
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:
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.
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