Diferencia entre revisiones de «SimpleDateFormat»

De ChuWiki
Saltar a: navegación, buscar
m
(Obtener un ''Date'' a partir de un ''String'')
Línea 45: Línea 45:
  
 
Una cosa interesante es que a la hora de convertir un ''String'' a ''Date'', la clase ''SimpleDateFormat'' es "indulgente", es decir, si metemos mal el ''String'', trata de corregirlo. Por ejemplo, si introducimos una fecha "32 de Enero", no obtendremos error, sino que se arreglará y nos devolverá un Date correspondiente a "1 de Febrero". Podemos eliminar este comportamiento con el método ''setLenient(false)'';
 
Una cosa interesante es que a la hora de convertir un ''String'' a ''Date'', la clase ''SimpleDateFormat'' es "indulgente", es decir, si metemos mal el ''String'', trata de corregirlo. Por ejemplo, si introducimos una fecha "32 de Enero", no obtendremos error, sino que se arreglará y nos devolverá un Date correspondiente a "1 de Febrero". Podemos eliminar este comportamiento con el método ''setLenient(false)'';
 +
Otro aspecto importante a tener en cuenta es nunca enviar
 +
SimpleDateFormat formateador = new SimpleDateFormat("dd/mm/yyyy");
 +
en vez de
 +
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
 +
debido a que mm se refiere a minutos y no meses.
  
 
  SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
 
  SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
Línea 50: Línea 55:
  
 
de esta forma, el "32 de Enero" dará un error.
 
de esta forma, el "32 de Enero" dará un error.
 
  
 
== Enlaces externos ==
 
== Enlaces externos ==

Revisión del 16:39 12 may 2009

Para qué sirve SimpleDateFormat

La clase SimpleDateFormat nos ayuda a mostrar las fechas en el formato que queramos o a reconstruirlas a partir de una cadena de texto.


Convertir un Date a String

Un uso simple de SimpleDateFormat para escribir una fecha en pantalla puede ser este

import java.text.SimpleDateFormat;
...
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");

// Esto muestra la fecha actual en pantalla, más o menos así 26/10/2006
System.out.println(formateador.format(new Date()));

Por supuesto, podemos jugar con la máscara y ponerla a nuestro gusto, dentro de las posibilidades que nos ofrece la API de SimpleDateFormat.

SimpleDateFormat formateador = new SimpleDateFormat("'Hoy es' EEEEEEEEE dd 'de' MMMMM 'de' yyyy");
SimpleDateFormat formatea = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat forma    = new SimpleDateFormat("'Ingresaste' EEEEEEEEE dd 'de' MMMMM 'de' yyyy");
DateFormat formatoFecha=DateFormat.getDateInstance(DateFormat.FULL);

En la API de SimpleDateFormat podemos ver todas las opciones para la máscara de fecha y hora.


Obtener un Date a partir de un String

Para reconstruir una fecha a partir de la cadena de texto, podemos usar la misma clase SimpleDateFormat. Por ejemplo, si un usuario escribe una fecha con este formato en un JTextField, podemos leerla así

import java.text.SimpleDateFormat;
...
JTextField textField = new JTextField();
...
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
try
{
   Date fecha = formateador.parse(textField.getText());
}
catch (ParseException e)
{
   // Error, la cadena de texto no se puede convertir en fecha.
}

Una cosa interesante es que a la hora de convertir un String a Date, la clase SimpleDateFormat es "indulgente", es decir, si metemos mal el String, trata de corregirlo. Por ejemplo, si introducimos una fecha "32 de Enero", no obtendremos error, sino que se arreglará y nos devolverá un Date correspondiente a "1 de Febrero". Podemos eliminar este comportamiento con el método setLenient(false); Otro aspecto importante a tener en cuenta es nunca enviar

SimpleDateFormat formateador = new SimpleDateFormat("dd/mm/yyyy");

en vez de

SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");

debido a que mm se refiere a minutos y no meses.

SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
formateador.setLenient(false);

de esta forma, el "32 de Enero" dará un error.

Enlaces externos