Clase Date en Javascript

  • Por
Explicamos la clase que se utiliza en Javascript para el manejo de fechas y horas, comentando sus métodos y propiedades.
Vamos a empezar a relatar todas las cosas que debes saber sobre otro de los objetos nativos de Javascript, el que implementa la clase Date.

Sobre la clase Date recae todo el trabajo con fechas en Javascript, como obtener una fecha, el día la hora actuales y otras cosas. Para trabajar con fechas necesitamos instanciar un objeto de la clase Date y con él ya podemos realizar las operaciones que necesitemos.

Un objeto de la clase Date se puede crear de dos maneras distintas. Por un lado podemos crear el objeto con el día y hora actuales y por otro podemos crearlo con un día y hora distintos a los actuales. Esto depende de los parámetros que pasemos al construir los objetos.

Para crear un objeto fecha con el día y hora actuales colocamos los paréntesis vacíos al llamar al constructor de la clase Date.

miFecha = new Date()

Para crear un objeto fecha con un día y hora distintos de los actuales tenemos que indicar entre paréntesis el momento con que inicializar el objeto. Hay varias maneras de expresar un día y hora válidas, por eso podemos construir una fecha guiándonos por varios esquemas. Estos son dos de ellos, suficientes para crear todo tipo de fechas y horas.

miFecha = new Date(año,mes,dia,hora,minutos,segundos)
miFecha = new Date(año,mes,dia)

Los valores que debe recibir el constructor son siempre numéricos. Un detalle, el mes comienza por 0, es decir, enero es el mes 0. Si no indicamos la hora, el objeto fecha se crea con hora 00:00:00.

Los objetos de la clase Date no tienen propiedades pero si un montón de métodos, vamos a verlos ahora.

getDate()
Devuelve el día del mes.

getDay()
Devuelve el día de la semana.

getHours()
Retorna la hora.

getMinutes()
Devuelve los minutos.

getMonth()
Devuelve el mes (atención al mes que empieza por 0).

getSeconds()
Devuelve los segundos.

getTime()
Devuelve los milisegundos transcurridos entre el día 1 de enero de 1970 y la fecha correspondiente al objeto al que se le pasa el mensaje.

getYear()
Retorna el año, al que se le ha restado 1900. Por ejemplo, para el 1995 retorna 95, para el 2005 retorna 105. Este método está obsoleto en Netscape a partir de la versión 1.3 de Javascript y ahora se utiliza getFullYear().

getFullYear()
Retorna el año con todos los dígitos. Usar este método para estar seguros de que funcionará todo bien en fechas posteriores al año 2000.

setDate()
Actualiza el día del mes.

setHours()
Actualiza la hora.

setMinutes()
Cambia los minutos.

setMonth()
Cambia el mes (atención al mes que empieza por 0).

setSeconds()
Cambia los segundos.

setTime()
Actualiza la fecha completa. Recibe un número de milisegundos desde el 1 de enero de 1970.

setYear()
Cambia el año recibe un número, al que le suma 1900 antes de colocarlo como año de la fecha. Por ejemplo, si recibe 95 colocará el año 1995. Este método está obsoleto a partir de Javascript 1.3 en Netscape. Ahora se utiliza setFullYear(), indicando el año con todos los dígitos.

setFullYear()
Cambia el año de la fecha al número que recibe por parámetro. El número se indica completo ej: 2005 o 1995. Utilizar este método para estar seguros que todo funciona para fechas posteriores a 2000.

Como habréis podido apreciar, hay algún método obsoleto por cuestiones relativas al año 2000: setYear() y getYear(). Estos métodos se comportan bien en Internet Explorer y no nos dará ningún problema el utilizarlos. Sin embrago, no funcionarán correctamente en Netscape, por lo que es interesante que utilicemos en su lugar los métodos getFullYear() y setFullYear(), que funcionan bien en Netscape e Internet Explorer.

Referencia: Te recomendamos un artículo sobre fechas que es especialmente práctico para las personas que quieren mostrar la fecha actual con varios formatos distintos.

A continuación, para afianzar todos estos conocimientos, te recomendamos ver algunos ejemplos de trabajo con objetos de la clase Date.

Autor

Miguel Angel Álvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

ZiCruz

26/7/2006
hay alguna formula o algoritmo para calcular el día de la semana sin restricciones

rusinho

04/4/2007
GetDay(), solo que trae es el numero, entonces lo debes convertir a dia por codigo.
Ejemplo: con if anidado para que sea mas sencillo.

var mi_fecha=new Date();
var mi_dia="";
if (mi_fecha.getDay()==0)
mi_dia="Domingo";
elseif (mi_fecha.getDay()==1)
mi_dia="Lunes";
elseif (mi_fecha.getDay()==2)
mi_dia="Martes";

Hay sigues colocando el resto de las opciones hasta completar los siete dias.

Programador

24/12/2007
La clase Date SI tiene propiedades o atributos:
http://www.w3schools.com/jsref/jsref_obj_date.asp

Para conversion automatica de fecha a string (aunque en ingles):
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_toutcstring

Blas

01/2/2008
El if anidado es un desproposito. Puedes conseguir lo mismo con un simple Array:

var dayArray = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo');
var day = dayArray[currentTime.getDay()];

Solo tienes que imprimir la variable 'day'.
Saludos.

Gabriel Espinoza

28/8/2009
Función obsoleta
La función ahí mostrada por algún motivo no me resulta, en cambio la arregé y quedó así:

function convertirAFecha(string) {
var date = new Date()
var mes = string.substring(3, 5);
date.setMonth(mes - 1); //en javascript los meses van de 0 a 11
date.setDate(string.substring(0, 2));
date.setYear(string.substring(6));
return date;
}

Miguel Patiño

14/1/2010
Convertir tick a Date
Hola!!

Quisiera saber si alguien sabe y puede explicarme, cómo pasar de tick a Date.

Se les agradece!!!

Isidro

19/8/2010
comentario
Muy buenas noches , he leido este artuculo y me ha parecido muy bueno, sin embargo , como estor aprendiendo java, deseo restar dos fechas y que el resultado lo escriba en tres cajas de texto (año,mes ,dias) ojala me puedan ayudar mil gracias de antemano

eduin santiago arroyo jaraba

13/3/2011
funcion de calcular dia
tengo la siguiente lineas de codigos html y me piden

Completar las expresiones o argumentos señalados en verde, que hagan falta
dentro del siguiente script, de tal manera que al abrir la página el resultado
mostrado sea:
Me llamo
nombresapellidos
soy de
ciudad
y nací un
día
Obviamente
nombres, apellidos, ciudad
y
día
, deben corresponder a mis
datos. En mi caso por ejemplo, la página debe mostrar:
Me llamo Eduin santiago Arroyo Jaraba soy de Galeras y nací un
día Sabado







<HTML>
<HEAD>
<TITLE>Día de nacimiento</TITLE>
<SCRIPT language="JavaScript1.3">
/*
Definición de la función que calcula el dia*/
function calculodia(z)
{
fecha = new Date(z);
return XXXXXXXX;
}
//Función constructora del objeto datos
function datos (a,b,c,d)
{
this.x=a;
this.y=b;
this.z=c;
/*El argumento dia recibe el valor devuelto por la función calculodia */
this.dia=XXXXXXXX;
}
dias=["aaa","bbb","zzz","ccc","ddd","www","yyy"];
/*
Instanciación del objeto mio, cuyos atributos contienen mis nombres,
apellidos, ciudad y fecha de nacimiento respectivamente cualquier fecha no importa*/
mio = new xxxx("aaaa","bbbb","cccc", "Mes dia, año");
/* Recuerde que mes corresponde al nombre del mes en inglés, por ejemplo
April y día y año son expresiones numéricas, por ejemplo, 6 y 1968*/
document.write("Me llamo "+aaa.b+" "+mio.y+" "+" xxx xx "+ ccc.d+" y
nací un día "+xxx[ddd.fff]);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

ojala y me puedan ayudar
de antemanos le doy las gracias y los felicito por el foro es muy educativo

¡EXCELENTE!

Nico

18/4/2011
Respuesta a eduin santiago arroyo jaraba
Espero que te ayude esto amigo.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Día de nacimiento</title>
<script type="text/javascript">
function datos(){
//Datos a rellenar
var dia=28
var mes=6
var ano=1989
var nombre="Pepito"
var apellidos="Grillo"
var ciudad="Desconocido"
//Fin de datos a rellenar

//Inicio procesos
var fecha= new Date(ano,mes,dia)
fecha=fecha.getDay()
var dayArray = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo');
for (i=0;i<7;i++){
if (i==fecha)
var semana=dayArray[i]
}
//Fin procesos

//Parte Final
var retorno="Me llamo "+nombre+" "+apellidos+", soy de "+ciudad+" y nací un día "+semana
return retorno
}
</script>
</head>
<body>
<script>
document.write(datos())
</script>
</body>
</html>

Leonardo Rodriguez Dominguez

12/5/2011
Restar Fechas
Pues para restar dos fechas es muy sencillo.
fecha1=new Date(anho,mes,dia);
fecha2=new Date(anho,mes,dia);
//Ahí tendrias las dos fechas, las modificas como tu quieras para tener la fechas
diafecha1=fecha1.getDate();
diafecha2=fecha2.getDate();
//Ahora tendrias los dias de las fechas, haremos lo mismo con mes y años
mesfecha1=fecha1.getMonth();
mesfecha2=fecha2.getMonth();
anhofecha1=fecha1.getFullYear();
anhofecha2=fecha2.getFullYear();
//Ahora restas como una operacion sencilla
diaresultado=diafecha1-diafecha2;
mesresultado=mesfecha1-mesfecha2;
anhoresultado=anhofecha1-anhofecha2;
//Ahora conviertes el resultado en la fecha deseada
fechaFinal=new Date (anhoresultado,mesresultado,diaresultado);
//Y ahí tendrías el resultado final. Lo he hecho largo para que se vean claramente todos los pasos

Joaco Velez

16/11/2012
Taller 5 - Ejercicio 2 JavaScript SENA
<html>
<head><title>Día de Nacimiento</title>
<script language="JavaScript1.3">
/*Definición de la función que calcula el día*/
function calculodia(z)
{
fecha=new Date(z);
return (fecha.getDay());
}
//Función constructora del objeto datos
function datos(a,b,c,d)
{
this.x=a;
this.y=b;
this.z=c;
/*El argumento dia recibe el valor devuelto por la función calculidia*/
this.dia=calculodia(d);
}
dias=["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"];
mio=new datos("Joaquin Fernando","Velez Herrera","Sincelejo","October 2, 1984");
document.write("Me llamo "+mio.x+" "+mio.y+" soy de "+mio.z+" y nací un día "+dias[mio.dia]);
</script>
</head>
<body>
</body>
</html>