feed twitter facebook LinkedIn facebook

Java » Obtener fecha actual con Java

octubre 16, 2007 por Víctor Cuervo 64 Comentarios Imprimir Imprimir

Viendo una gráfica de términos informáticos buscados por Internet resultaba curioso que una de las frases más buscada era la de obtener la fecha actual del sistema en múltiples lenguajes: Java, C, C++, Perl, Python, Visual Basic,... etc.

Es por ello, por lo que me he propuesto escribir este ejemplo de cómo obtener la fecha del sistema en Java. Y eso que en los primeros tiempos del lenguaje java era bastante simple. Ya que nos bastaba con instanciar un objeto Date y con sus métodos getDay(), getMonth(),.. teníamos rápidamente la fecha montada

// Deprecated
java.util.Date fecha = new Date();
System.out.println (fecha.getDay());
System.out.println (fecha.getMonth());

Pero se dieron cuentas que lo de las fechas tenía mucha más intríngulis que simples "setters" y "getters" y todo esto ha sido declarado obsoleto.

Pero tampoco nos pongamos tan tristes. Que todavía podemos instanciar un objeto Date, y por supuesto, mostrarlo por pantalla.

java.util.Date fecha = new Date();
System.out.println (fecha);

Dándonos cómo resultado algo así:

Sat Sep 24 21:07:36 CEST 2005

La cosa se nos complicará un poco si queremos obtener por separado el día, el mes y el año. Que, por otra parte, es lo que buscamos con este ejemplo.

Para ello tenemos la clase Java Calendar. Lo primero que tenemos que saber de la clase Calendar es la forma de instanciarlo. Y es que no podemos instanciar directamente una clase Calendar. Es decir, no podemos hacer un new Calendar(). Lo que podemos hacer son dos cosas: o bien utilizamos el método estático .getInstance() de la clase Calendar, o bien, construimos una clase GregorianCalendar.

En ambos casos lo que obtenemos es una clase Calendar la cual contiene información de la fecha local del sistema. Y es que la Clase Calendar nos permite otras cosas, como por ejemplo, obtener la fecha de otra ubicación geográfica que no sea la del sistema.

Calendar c1 = Calendar.getInstance();
Calendar c2 = new GregorianCalendar();

Una vez que tenemos instanciada nuestra clase Calendar ya podremos hacer uso de los "getters" y "setters" de antaño. Pero con una modificación y es que existe un único método get que recibe por parámetro el tipo de información a recuperar en formato número entero. Si bien, no tenemos que sabernos la correspondencia de valores de los números enteros, ya que la clase Calendar nos ofrece un conjunto de clases estáticas para facilitarnos la ayuda.

Relativo a estas constantes tenemos:

  • Calendar.DATE, que representa el día del mes.
  • Calendar.MONTH, que representa el mes del año.
  • Calendar.YEAR, que representa el año.

Tenemos muchas otras más DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR,...

Al final, nuestro código Java quedará algo así:

dia = Integer.toString(c.get(Calendar.DATE));
mes = Integer.toString(c.get(Calendar.MONTH));
annio = Integer.toString(c.get(Calendar.YEAR));

Visualizar el ejemplo | Descargar el código

Foro sobre Java Básico
Foro sobre Java Básico
tags: , , , , , ,

Artículos relacionados:

64 comentarios »

RSS feed para los comentarios de esta entrada.TrackBack URI

1 2 3 7
  1. Felipe
    octubre 19, 2007 #

    Hola.

    Tengo una pequeña aplicación con jsp y servlets que se conectan a una BD MySQL. Resulta que tengo un campo tipo DATE, que al rescatarlo y guardarlo como String no tengo problema, salvo que me aparece ordenado YYYY-MM-DD, formato SQL. He intentado guardarlo como DATE pero es un enredo. Lo único que necesito es reordenar la fecha, para que se lea DD-MM-YYYY. Se podría hacer una función para analizar el String, guardar los datos en otras variables, y luego devolver las variables ordenas. Pero no es la idea :P, ojalá se pueda tratar como DATE. Alguna ayuda?

  2. Jazmín
    noviembre 18, 2007 #

    Hola

    Estuve rebisando el codigo, pero al correrlo, me aparece esto…

    Sun Nov 18 17:02:17 GMT 2007
    18/10/2007

    como veras el mes no coincide,esto por que sucedera?

  3. GreatQ
    enero 3, 2008 #

    Porque empieza desde el cero..

  4. JJ
    febrero 19, 2008 #

    mes = Integer.toString(c.get(Calendar.MONTH) + 1 );

  5. esteban
    marzo 9, 2008 #

    gracias por tu codigo me sirvio de mucho de verdad mil gracias

  6. Patricia
    marzo 13, 2008 #

    hola que tal estando revisando estos mensajes tengo una enorme duda pues estoy haciendo una aplicacion Web con java en netbeans con menejador de base de datos en mysql bueno al grano…..
    resulta que netbeans me da la oportunidad de jalar de la barra de herramientas calendarios ok… bueno alejecutar la aplicacion web se ejecuta el calendario cuando das clic sobre el (obvio) bueno mi duda
    como le hago para tomar la fecha que haya seleccionado el usuario y guardarla en mysql no es el formato pues ya lo tengo como YYYY/MM/DD pero no se como jalarlo por fa ayudenme ya estoy cansada de no encontrar nada
    De antemano Gracias !!!!!!!!!!!!!!

  7. Adrian
    abril 4, 2008 #

    Ya revisaste el API a lo mejor puedes encontrar una funcion q te sirva.

    http://www.toedter.com/en/jcalendar/api/index.html

    ;)

  8. Fernanda
    abril 15, 2008 #

    Hola estoy trabajando en sql 2005 y quiero hacer una consulta en la cual necesito obtener el día de un determinado mes pero, el método getgay no me lo reconoce sql y me marca error.

    podrían orientarme por favor ya intenté de mil formas
    GRACIAS…

  9. wilzon zurita
    mayo 8, 2008 #

    hola soy wilzon necesito saber,teniendo 2 parametros doy el año y el mes y como impresion me devuelva el ultimo dia del mes

    2008/04
    impresion friday 30 April

  10. adsa
    junio 11, 2008 #

    Muchas gracias el instance no me sirvio de mucho el otro si gracias

1 2 3 7

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*