uso de fechas en java

3
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 más correctos con la definición que nos brinda java, la clase Date representa un instante de tiempo con precisión en milisegundos.Varios de los métodos de esta clase están deprecados (fuera de uso) y han sido reemplazados por métodos de la clase Calendar y la clase DateFormat. La clase Calendar, también perteneciente al paquete java.util, permite representar una fecha relacionándola con algún 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 Sin más preámbulos, veamos ejemplos del uso de estas clases. PPR 2K10 UTN FRC 2009 1. import java.text.SimpleDateFormat; 2. import java.util.Calendar; 3. import java.util.Date; 4. public class Main { 5. public static void main(String[] args) { 6. // Con el constructor por defecto, la variable fecha toma el valor 7. // de la fecha actual del sistema. 8. Date fecha = new Date(); 9. //el método println, llama automáticamente al método toString 10. // del parámetro recibido. En este caso fecha. 11. System.out.println("La fecha actual: "+ fecha); 12. //Si quisiera utilizar una fecha posterior o anterior a la actual 13. //debo utilizar la clase Calendar. 14. Calendar calendario = Calendar.getInstance(); 15. // Seteo 25 de Junio de 1999. 16. // El mes es zero-based. 0-> Enero...11-> Diciembre. 17. calendario.set(1999, 5, 25); 18. //Guardo el tiempo seteado en un objeto Date 19. Date fecha2 = calendario.getTime(); 20. System.out.println("Una fecha anterior: "+ fecha2); 21. // Para dar formato a las fechas puedo usar DateFormat o la 22. // subclase SimpleDateFormat. 23. //Para crear un objeto puedo pasarle el patrón para formatear. 24. SimpleDateFormat formateador = new SimpleDateFormat("dd-MM-yyyy"); 25. //Formateo la fecha y guardo el String resultante del formateo. 26. String fechaConFormato = formateador.format(fecha); 27. System.out.println("Fecha Actual con formato: "+fechaConFormato); 28. //Puedo usar patrones complejos. 29. SimpleDateFormat formateador2; 30. formateador2 = new SimpleDateFormat("EEEE dd 'de' MMMM 'de' yyyy'. Es el día número 'D' del año.'"); 31. System.out.println("Una fecha anterior con un formato más complejo:" +formateador2.format(fecha2)); 32. } 33. }

Upload: roman-sadowski

Post on 24-Jul-2015

567 views

Category:

Documents


0 download

DESCRIPTION

como utilizar las fechas en java

TRANSCRIPT

Page 1: Uso de Fechas en Java

Uso de fechas en JavaEl 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 más correctos con la definición que nos brinda java, la clase Date representa un instante de tiempo con precisión en milisegundos.Varios de los métodos de esta clase están deprecados (fuera de uso) y han sido reemplazados por métodos de la clase Calendar y la clase DateFormat. La clase Calendar, también perteneciente al paquete java.util, permite representar una fecha relacionándola con algún 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 algún formateo de fecha específico.

Sin más preámbulos, veamos ejemplos del uso de estas clases.

PPR 2K10 UTN FRC 2009

1. import java.text.SimpleDateFormat;2. import java.util.Calendar;3. import java.util.Date;4. public class Main {5. public static void main(String[] args) {6. // Con el constructor por defecto, la variable fecha toma el valor7. // de la fecha actual del sistema.8. Date fecha = new Date();

9. //el método println, llama automáticamente al método toString 10. // del parámetro recibido. En este caso fecha.11. System.out.println("La fecha actual: "+ fecha);

12. //Si quisiera utilizar una fecha posterior o anterior a la actual13. //debo utilizar la clase Calendar.14. Calendar calendario = Calendar.getInstance();

15. // Seteo 25 de Junio de 1999. 16. // El mes es zero-based. 0-> Enero...11-> Diciembre.17. calendario.set(1999, 5, 25);

18. //Guardo el tiempo seteado en un objeto Date19. Date fecha2 = calendario.getTime();

20. System.out.println("Una fecha anterior: "+ fecha2);

21. // Para dar formato a las fechas puedo usar DateFormat o la 22. // subclase SimpleDateFormat.23. //Para crear un objeto puedo pasarle el patrón para formatear.24. SimpleDateFormat formateador = new SimpleDateFormat("dd-MM-yyyy");

25. //Formateo la fecha y guardo el String resultante del formateo.26. String fechaConFormato = formateador.format(fecha);27. System.out.println("Fecha Actual con formato: "+fechaConFormato);

28. //Puedo usar patrones complejos.29. SimpleDateFormat formateador2; 30. formateador2 = new SimpleDateFormat("EEEE dd 'de' MMMM 'de' yyyy'. Es el

día número 'D' del año.'");31. System.out.println("Una fecha anterior con un formato más complejo:"

+formateador2.format(fecha2));32. }33. }

Page 2: Uso de Fechas en Java

La salida en consola de lo anterior se lista a continuación:

En la primera línea de la salida puede observarse el resultado de ejecución de la línea 11. Nos muestra por consola lo generado por el método toString de la clase Date. Claramente no es la forma más prolija de mostrar una fecha, no se puede negar, sin embargo, que brinda mucha información. No hay que perder de vista, que según la definición de Java, Date no solo muestra fechas, sino instantes de tiempo. Está definición 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 línea de la salida se ve una fecha anterior a la actual. En la línea 14, se ve cómo crear un objeto de tipo Calendar. Cabe la aclaración que Calendar es una clase abstracta, por lo tanto no puede ser instanciada. Sin embargo a través del método estático getInstance, se puede crear un calendario. Luego de esto, a través de los métodos de seteo de Calendar, puedo establecer una fecha de referencia. En la línea 17 se utilizó la sobrecarga de set que recibe tres enteros que representan año, mes y día respectivamente. Y luego, a través del método getTime, que retorna un Date (línea 19), se carga la variable fecha2 con el objeto fecha relativo al calendario creado. Los calendarios ofrecen muchas posibilidades, por ejemplo establecer una ubicación geográfica 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 línea de la salida muestra la fecha actual de una forma más legible y útil. Esto se logra a través de objetos DateFormat, en el ejemplo se utilizó una subclase de DateFormat, SimpleDateFormat (línea 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 patrón de formato. Los patrones de formato son utilizados para mostrar fechas representadas por objetos Date, con algún formato particular. Quien realiza el formateo es el método format, que recibe un Date como parámetro y retorna un String con el formato deseado. También 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 parámetro por el método 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 línea de la salida se ve cómo utilizar los patrones de formato para mostrar más información, en nuestro ejemplo (línea 30), no solo el día de la semana mostrado en forma textual, sino incluso que número de día del año fue el de la fecha en cuestión. Más detalles sobre patrones de formato: http://java.sun.com/docs/books/tutorial/i18n/format/simpleDateFormat.html

PPR 2K10 UTN FRC 2009

La fecha actual: Tue Mar 10 09:50:37 ACT 2009Una fecha anterior: Fri Jun 25 09:50:37 ACT 1999Fecha Actual con formato: 10-03-2009Una fecha anterior con un formato más complejo: viernes 25 de junio de 1999. Es el día número 176 del año.