Obtener fecha actual con Java

16/oct/2007 Java , , , 64 Comentarios
java

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

  1. // Deprecated
  2. java.util.Date fecha = new Date();
  3. System.out.println (fecha.getDay());
  4. 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.

  1. java.util.Date fecha = new Date();
  2. 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.

  1. Calendar c1 = Calendar.getInstance();

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í:

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

Vídeos sobre Java Básico

Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

64 comentarios en “Obtener fecha actual con Java”

Víctor Cuervo

Packo

muchas gracias me sirvio bastante
saludos

Víctor Cuervo

Víctor Cuervo

@Adolfo Rios Mixco, los meses los devuelve empezando por el 0. Es decir, 0 corresponde a Enero y 11 a Diciembre.

Tienes la explicación en el API de Java – http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH (en inglés).

Saludos.

Víctor Cuervo

alex

Adolfo Rios Mixco ,
lo mas probable es que te haya devuelto un 6 para el mes de julio que corresponde
normalemente al mes 7,
esto se inicializa como un arreglo por lo que parte en 0
[0] = enero
[1] = febrero
[2] = marzo
[3] = abril
[4] = mayo
[5] = junio
[6] = julio

si lo que necesitas es mostrarlo sumale uno al mes y ya esta
eso espero que te sirva 😀

Víctor Cuervo

Adolfo Rios Mixco

Hola, utilice la mismas declaraciones de la siguiente manera

Calendar c = new GregorianCalendar();
String dia = Integer.toString(c.get(Calendar.DATE));
String mes = Integer.toString(c.get(Calendar.MONTH));
String annio = Integer.toString(c.get(Calendar.YEAR));
sin embargo en el mes me devuelve un mes anterior, ya revise la conf. de la fecha de mi pc, y esta ok, no se realmente por que me devuelve el mes el dia y el annio estan ok, alguien me podria ayudar?, Gracias de antemano.

Víctor Cuervo

alex

@feancisco necesitas los metodos deprecated?

Víctor Cuervo

Francisco Sepúlveda

Hola, estoy investigando sobre los métodos precated del date pero lo único que encuentro son los métodos day, month y year. Quisiera saber si alguien tiene mas información sobre mas métodos que estén precated.

Víctor Cuervo

Ronaldo Tinoco Salgado

Aka un pequeño regalo para sus aplicaciones.
Saludos.

public static String TimeFull24() {
return Hora() + “:” + Minuto() + “:” + Segundo();
}

public static String FechaFull() {
Calendar calendario = new GregorianCalendar();
return String.valueOf(calendario.get(Calendar.DAY_OF_MONTH))
+ “/” + String.valueOf(calendario.get(Calendar.MONTH))
+ “/” + String.valueOf(calendario.get(Calendar.YEAR));
}

public static String Hora() {
Calendar calendario = new GregorianCalendar();
if (String.valueOf(calendario.get(Calendar.HOUR_OF_DAY)).length() == 2) {
return String.valueOf(calendario.get(Calendar.HOUR_OF_DAY));
} else {
return “0” + String.valueOf(calendario.get(Calendar.HOUR_OF_DAY));
}
}

public static String Hora_AMPM() {
Calendar calendario = new GregorianCalendar();
if (String.valueOf(calendario.get(Calendar.HOUR)).length() == 2) {
return String.valueOf(calendario.get(Calendar.HOUR));
} else {
return “0” + String.valueOf(calendario.get(Calendar.HOUR));
}
}

public static String Minuto() {
Calendar calendario = new GregorianCalendar();
if (String.valueOf(calendario.get(Calendar.MINUTE)).length() == 2) {
return String.valueOf(calendario.get(Calendar.MINUTE));
} else {
return “0” + String.valueOf(calendario.get(Calendar.MINUTE));
}
}

public static String Segundo() {
Calendar calendario = new GregorianCalendar();
if (String.valueOf(calendario.get(Calendar.SECOND)).length() == 2) {
return String.valueOf(calendario.get(Calendar.SECOND));
} else {
return “0” + String.valueOf(calendario.get(Calendar.SECOND));
}
}

Víctor Cuervo

Víctor Cuervo

@Ambar Quintana, Me alegro que te haya gustado y muchas gracias por tu comentario.

Víctor Cuervo

Ambar Quintana

Me gusto Muchisimo! Gracias 😀 😀

Víctor Cuervo

Víctor Cuervo

@Ambar Quintana, Me alegro que te haya gustado. 😀

Víctor Cuervo

Ambar Quintana

Oye Graciias! me sirvio de muchoo! Besos y Abrazos! Gracias por compartir!

Víctor Cuervo

ivonne

como puedo obtener la fecha pero que me arroje por ejemplo 01-08-2012 09-08-2012 osea del dia 1 hasta el 9 me le agrege un cero lo necesito para ordenar los datos por fecha ya que si no pongo el cero no me ordena adecuadamente los datos

Víctor Cuervo

alex

metodo para obtener la fecha de mañana en java

public static final String getFechaManana(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat dateformat = new SimpleDateFormat(“dd/MM/yyyy”);
String fecha = dateformat.format(cal.getTime());
return fecha;
}

Víctor Cuervo

viviana

muchas gracias fue de mucha ayuda este codigo

Víctor Cuervo

josmarl

/*
* Con este código pueden obtener el formato que te pide normalmente una base de datos
*
*/

public class FechaSistema {
public Date fecha()
{
java.util.Date dates=new java.util.Date();
long fechaSis = dates.getTime();
java.sql.Date d=new java.sql.Date(fechaSis);
return d;
}
public static void main(String []args){
FechaSistema fs=new FechaSistema();
System.out.println(fs.fecha());
}
}

Víctor Cuervo

Jose

Hola.

Revisando un poco lo que hay en la web sobre fechas en Java he encontrado tu blog

No lo conocía y me parece interesante la cantidad de ejemplos de código que muchas veces son útiles. Mi blog no está tan orientado a la programación, aunque también me gusta plasmar ejemplos prácticos con las tareas comunes que tenemos que hacer los programadores.

Yo también he escrito un post sobre fechas en Java ( http://jpascu.blogspot.com/2011/11/fechas-en-java.html).

Enhorabuena por el blog

Víctor Cuervo

rey salcedo

simplemente, muchas gracias

Víctor Cuervo

Henry Wong

Puedes ver un ejemplo que complemente a lo tuyo en

http://www.programandoconcafe.com/2011/03/java-manejo-de-fechas-javautildate.html

Saludos

Víctor Cuervo

vuelos low cost

Muy buen tutorial e intersante. Gracias…

Víctor Cuervo

Eduardo Ballesteros

Hola excelnte tutorial.
Se deberian aclarar unas cosas como que:
“The first month of the year is JANUARY which is 0; the last depends on the number of months in a year.”

Víctor Cuervo

Rafael

hola tengo un metodo donde obtengo la fecha del sistema
// para mensajes
public void msj (String cade ){
System.out.print (cade);
}

//para la fecha
public void Fecha(){
Calendar f=Calendar.getInstance();
String di[]={” “,”domingo”,”lunes”,”martes”,”miercoles”, “jueves”,”viernes”,”sabado”};
String me[]={“enero”,”febrero”,”marzo”,”abril”,”mayo”,”junio”,”julio”, “agosto”, “septiembre”, “octubre”,”noviembre”,”diciembre”};
A=f.get(Calendar.YEAR);
M=f.get(Calendar.MONTH);
D=f.get(Calendar.DAY_OF_MONTH);
S=f.get(Calendar.DAY_OF_WEEK);
msj(“\tQuito DM “+di[S]+” “+D+” de “+me[M]+” del “+A);
}
estos son los metodos utilizados
como hago para q la fecha se muestre(aparezca) en un txtbox o label trabajo con NetBeans gracias por su ayuda

Víctor Cuervo

Pablo

Gracias me sirvio de mucho. Aunqie solo m funciono con el GregorianCalendar.
Me podrian ayudar que en vez del gregorian sea con el
Calendar.getInstance()

Saludos

Víctor Cuervo

René

Hola, tengo una duda:
tendo en una base de datos de msql un registro que guarda la fecha, y aunque no tengo problema para guardar este dato, el problema es cuando lo quiero mostrar ya que quiero que apereza por separado dia, mes y año, cada uno en un objeto, select, esto para poder ser editado después de mostrarse, el problema es que no se como descomponer el campo en estos tres valores.
Alguien me indico que usando la funcion Day, Month, Year, pero hasta el momento solo he visto ejemplos de obtner la fecha actual.
Podrían ayudarme, y tambien explicar lo de la “c”, en la instruccion “c.get”.

Saludos

Víctor Cuervo

liizy

hola
tengo unpequeño problema
me pueden ayudar..
como puedo hacer un metodo que me de mi edad y mediga cuantos meses faltan para mi cumple o si ya paso solo introduciendo mi fecha de nacimiento…
sin contar dias solo mese
espero me puedan ayudar

Víctor Cuervo

Raul Marcelo Lopez

Quiero saber q uso para luego poder guardar la fecha como Date o DateTime….
Solo la fecha es sufieciente, la hora me da igual…

Necesito AYUDA!!!

gracias

Víctor Cuervo

Fabian Ocampo

Estoy haciendo una aplicacion que me permite guadar una serie de miembros en una base de datos, quiero q el aplicativo me reporte a diario quienes estan de cumpleanos ese dia…entonces quiero asignarle a cada miembro una fecha de nacimiento para despues compararla con la fecha actual….como puedo manejar esto en java con date¡??????

Víctor Cuervo

lineadecodigo

@andres,

Me alegro que te haya servido. :-)

Víctor Cuervo

andres

gracias por tu ayuda

Víctor Cuervo

Liss

hola, alguien me puede pasar el código de un programa en java que me proporcione la fecha actual introduciéndole yo mi fecha de nacimiento???. porfis es urgentisimo.

Víctor Cuervo

claudio vasquez puclla

importar lo siguiente:

import java.util.Calendar;
import java.util.GregorianCalendar;

Calendar c = new GregorianCalendar();
String dia;
String mes;
String annio;
dia = Integer.toString(c.get(Calendar.DATE));
mes = Integer.toString(c.get(Calendar.MONTH));
annio = Integer.toString(c.get(Calendar.YEAR));
String fecha=(“”+dia+”/”+mes+”/”+annio);
//this.tfecha.setText(fecha);
System.out.println (“”+dia+”/”+mes+”/”+annio);

Víctor Cuervo

Javier Gomez

Tengo una duda,,,, quien es “c”

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

????????????????????????????…..

Víctor Cuervo

Mario G.

Buenísimo!!! me sirvió un montón, gracias!!!

Víctor Cuervo

Jose

Hola

Necesito escribir un programa que pida al usuario una fecha y responda si la fecha esta bien escrita en español. No es necesario verificar que la fecha es válida, solo que tiene el formato correcto. Así que su programa deberá decretar que una fecha como 30 de febrero de 2001 está bien escrita a pesar de que no es válida.

Me podrian ayudar?

Víctor Cuervo

lineadecodigo

@neinGott,

Me alegro que te haya servido. :-) :-) :-)

Víctor Cuervo

more

hola esttoy utilizando netbeans 6.5 y e agregado un jdatecalendar, de la clase jCalendar.

Mi pregunta es ¿Como hago para q ese tipo de fecha lo pueda almacenar en una base de datos en MySQL en formato yyyy-MM-dd ?

Es pero que respondan pronto, osea hoy xD…

Víctor Cuervo

neinGott

Gracias por la explicada, tenia muchos problemas con eso de las fechas tu solucion de “Calendar c1 = Calendar.getInstance();” fue magica, gracias de nuevo.

Saludos desde Guatemala!!!

Víctor Cuervo

Ana Milena

Muchisimas gracias, me fue de mucha utilidad!!!!

Víctor Cuervo

aNgelOsX

muchas gracias :) muy util

Víctor Cuervo

ana

necesito hacer un cronometro , del cual activo con un boton y a partir del tiempo transcurrido que me vaya calculando el precio por minuto, como podria hacer, tipo los cibercafe lo que hacen con las compus gracias

Víctor Cuervo

elizabeth

Elizabeth,

Soy nueva en java, porfavor alguien me pueda ayudar quiero obtener el numero de dias dado un rango de fechas, desde ya gracias por su ayuda

Víctor Cuervo

El Rorro

Larry no seas pendejo, es que el mes va desde 0 a 11, no de 1 a 12

Víctor Cuervo

larry

Hola,
estaba probando esto, pero me di cuenta que hay problemas con el mes, ya que estando en marzo, me da que el mes es 2. Espero que sepan como solucionarlo y desde ya, muchas gracias.

Saludos

Víctor Cuervo

julian juarez

tengo una aplicacion jtf version vieja de jsp… en cuanto a tecnologia…
nescecito a la fecha q me trae un combo (fechaHasta) que me tome el ultimo segundo de ese dia.. ya que tengo fecha desde y fecha hastay de fecha hasta me esta tomando hasta las 23.59 y que un dato a las fecha hasta a las 23.59.01 no entraria en dicho rango el cual estaria mal.. lo q yo kisiera aser es agregarle un dia cuando me toma la fecha hasta… querria aserlo desde el serviceimpl que llama el action de mi .jtf
si alguien tiene ese codigo corto y sencillo lo agradezco…

Víctor Cuervo

eduardo

hola saludos a la persona que hizo el tuto buenisimo muchas gracias me salio todo.Sigue aso brother

Víctor Cuervo

YaNiSe

Hola Soy mas que nueva nuevecita…….

Comence a trabajar con el manual Netbeans, muy organizado, pero hay una clase, “import objetos.Servicios.Fecha” que no muestra como se realiza y es necesaria para terminar de hacer la practica … hasta el momento he inventado lo que se me ha ocurrido y encontrado en la red y de verdad que no ha funcionado.

Víctor Cuervo

beto

una pregunta si recibo una fecha anterior a la actual cualquiera, quisiera saber como puedo utilizar la clase Calendar para que em diga el nombre del dia de la semana que cae en esa fecha

Víctor Cuervo

Edna !! XD

Wowwww
Eres la onda!! =)

Al fin pudee agregar la fechaaa..

Gracias!!!
eres un genio =D

Víctor Cuervo

Antonio

una pregunta a k t refieres con la c antes del get no le entiendo a que t refieres

annio = Integer.toString(c.get(Calendar.YEAR));

que libreria debo importar…

gracias

Víctor Cuervo

Alex

Muchas Gracias por tu codigo me sirvio de mucha ayuda
GRACIAS
Atentemente ALX

Víctor Cuervo

Yanio

estoy trabajando en una aplicacion jpa en netBeans y necesito saber como puedo selecionar varias fechas en un componente de un calendario

Gracias por adelantado

Víctor Cuervo

adsa

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

Víctor Cuervo

wilzon zurita

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

Víctor Cuervo

Fernanda

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…

Víctor Cuervo

Adrian

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

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

😉

Víctor Cuervo

Patricia

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 !!!!!!!!!!!!!!

Víctor Cuervo

esteban

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

Víctor Cuervo

JJ

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

Víctor Cuervo

GreatQ

Porque empieza desde el cero..

Víctor Cuervo

Jazmín

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?

Víctor Cuervo

Felipe

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?

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*


*