Está en la página 1de 2

Uso de fechas en Java

El uso de fechas en java es un asunto sencillo si se emplea correctamente las clases que nos provee el lenguaje. Java nos provee, como es obvio, una clase que representa una fecha como un objeto. El nombre de esta clase es Date y pertenece al paquete java.util. Para ser ms correctos con la definicin que nos brinda java, la clase Date representa un instante de tiempo con precisin en milisegundos.Varios de los mtodos de esta clase estn deprecados (fuera de uso) y han sido reemplazados por mtodos de la clase Calendar y la clase DateFormat. La clase Calendar, tambin perteneciente al paquete java.util, permite representar una fecha relacionndola con algn sistema de calendarios. La clase DateFormat, que a diferencia de las dos anteriores, pertenece a al paquete java.text, permite realizar parseos (String Date) y formateos (Date String), en base a algn formateo de fecha especfico. Sin ms prembulos, veamos ejemplos del uso de estas clases.
import import import public java.text.SimpleDateFormat; java.util.Calendar; java.util.Date; class Main { public static void main(String[] args) { // Con el constructor por defecto, la variable fecha toma el valor // de la fecha actual del sistema. Date fecha = new Date(); //el mtodo println, llama automticamente al mtodo toString // del parmetro recibido. En este caso fecha. System.out.println("La fecha actual: "+ fecha); //Si quisiera utilizar una fecha posterior o anterior a la actual //debo utilizar la clase Calendar. Calendar calendario = Calendar.getInstance(); // Seteo 25 de Junio de 1999. // El mes es zero-based. 0-> Enero...11-> Diciembre. calendario.set(1999, 5, 25); //Guardo el tiempo seteado en un objeto Date Date fecha2 = calendario.getTime(); System.out.println("Una fecha anterior: "+ fecha2); // Para dar formato a las fechas puedo usar DateFormat o la // subclase SimpleDateFormat. //Para crear un objeto puedo pasarle el patrn para formatear. SimpleDateFormat formateador = new SimpleDateFormat("dd-MM-yyyy"); //Formateo la fecha y guardo el String resultante del formateo. String fechaConFormato = formateador.format(fecha); System.out.println("Fecha Actual con formato: "+fechaConFormato); //Puedo usar patrones complejos. SimpleDateFormat formateador2; formateador2 = new SimpleDateFormat("EEEE dd 'de' MMMM 'de' yyyy'. Es el da nmero 'D' del ao.'"); System.out.println("Una fecha anterior con un formato ms complejo:" +formateador2.format(fecha2)); }

5. 6. 7. 8.

9. 10.

11.

12. 13.

14.

15. 16. 17. 18. 19. 20. 21. 22.

23.

24. 25. 26. 27. 28. 29.

30. 31. 32.


33. }

PPR 2K10

UTN FRC 2009

La salida en consola de lo anterior se lista a continuacin:


La fecha actual: Tue Mar 10 09:50:37 ACT 2009 Una fecha anterior: Fri Jun 25 09:50:37 ACT 1999 Fecha Actual con formato: 10-03-2009 Una fecha anterior con un formato ms complejo: viernes 25 de junio de 1999. Es el da nmero 176 del ao.

En la primera lnea de la salida puede observarse el resultado de ejecucin de la lnea 11. Nos muestra por consola lo generado por el mtodo toString de la clase Date. Claramente no es la forma ms prolija de mostrar una fecha, no se puede negar, sin embargo, que brinda mucha informacin. No hay que perder de vista, que segn la definicin de Java, Date no solo muestra fechas, sino instantes de tiempo. Est definicin es muy importante ya que incluso uno de los constructores de Date permite ingresar un long que representa la cantidad de milisegundos que pasaron desde el 1ero de Enero de 1970. Para ver un detalle completo de la clase Date: http://java.sun.com/javase/6/docs/api/java/util/Date.html. En la segunda lnea de la salida se ve una fecha anterior a la actual. En la lnea 14, se ve cmo crear un objeto de tipo Calendar. Cabe la aclaracin que Calendar es una clase abstracta, por lo tanto no puede ser instanciada. Sin embargo a travs del mtodo esttico getInstance, se puede crear un calendario. Luego de esto, a travs de los mtodos de seteo de Calendar, puedo establecer una fecha de referencia. En la lnea 17 se utiliz la sobrecarga de set que recibe tres enteros que representan ao, mes y da respectivamente. Y luego, a travs del mtodo getTime, que retorna un Date (lnea 19), se carga la variable fecha2 con el objeto fecha relativo al calendario creado. Los calendarios ofrecen muchas posibilidades, por ejemplo establecer una ubicacin geogrfica o una zona horaria, para que el calendario tome o retorne la fecha teniendo en cuenta a estos ltimos. Para ver un detalle completo de la clase Calendar: http://java.sun.com/javase/6/docs/api/java/util/Calendar.html. La tercera lnea de la salida muestra la fecha actual de una forma ms legible y til. Esto se logra a travs de objetos DateFormat, en el ejemplo se utiliz una subclase de DateFormat, SimpleDateFormat (lnea 24). DateFormat, al igual que Calendar, es una clase abstracta. SimpleDateFormat es una clase concreta y puedo crear un objeto de este tipo, en nuestro caso, utilizando un patrn de formato. Los patrones de formato son utilizados para mostrar fechas representadas por objetos Date, con algn formato particular. Quien realiza el formateo es el mtodo format, que recibe un Date como parmetro y retorna un String con el formato deseado. Tambin puede realizarse el proceso inverso, denominado parseo. En este ltimo, se recibe un String y se retorna un Date. Para que esto no conlleve a una ParseException, el String recibido como parmetro por el mtodo parse debe seguir el formato que se especific en el momento en que se cre el objeto SimpleDateFormat. Para ver un detalle completo de la clase SimpleDateFormat: http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html En la cuarta lnea de la salida se ve cmo utilizar los patrones de formato para mostrar ms informacin, en nuestro ejemplo (lnea 30), no solo el da de la semana mostrado en forma textual, sino incluso que nmero de da del ao fue el de la fecha en cuestin. Ms detalles sobre patrones de formato: http://java.sun.com/docs/books/tutorial/i18n/format/simpleDateFormat.html

PPR 2K10

UTN FRC 2009