La clase de objetosDate permite guardar y manejar fechas en javascript.
Para crear objetos de la clase Date utilizaremos la forma habitual de crear nuevos
objetos.
-3-
Si no pasamos ningún argumento en el paréntesis obtendremos la fecha actual (fecha del ordenador del usuario).
Podemos pasar una fecha distinta de la actual indicándolo con los siguientes argumentos:
fechaAnterior = new Date(anno,mes,dia,hora,minuto,segundo)
Los argumentos que pasemos deben ser todos números e ir en este orden, y además debemos tener en cuenta lo siguiente:
El año (anno) debe escribirse con las cuatro cifras (ej.: 2012, y no 12);
Los meses empiezan a contar desde 0 de manera que enero = 0, febrero = 1 ... diciembre =
11.
No debemos poner ceros delante de ningún número (por ejemplo 7, y no 07) tanto en
meses, como en horas, minutos o segundos.
Las horas van desde 0 a 23, (no existe la hora 24). Los minutos y los segundos van desde
0 a 59.
Podemos prescindir de los tres últimos argumentos, y poner únicamente el año, el mes y el día:
fechaAnterior = new Date(anno,mes,dia)
En este caso la hora, minuto y segundo serán igual a 0.
Al acceder directamente a un objeto de la clase Date obtenemos la fecha en un formato que no es muy habitual. Será parecido a lo siguiente:
Mon Mar 01 2010 12:23:15 GMT+0100
Esto se interpreta de la siguiente manera:
Mon: día de la semana en inglés (lunes). Mar: Mes del año en inglés (Marzo) 01: día del mes (de 1 a 31)
2010: año
12:23:15: Hora, minuto y segundo respectivamente.
GMT+0100: Diferencia entre la hora local y la hora internacional, o la del meridiano de
Greenwich."
Para poder ver las fechas en un formato más normal, usaremos los métodos de lectura de la claseDate. También hay métodos de escritura que nos periten modificar las fechas.
Veamos primero los métodos de lectura:
6.4.1. Métodos de lectura.
En la siguiente tabla partimos del siguiente objeto:
fecha = new Date()
La variable fecha contiene la fecha actual. A partir de ahí con los métodos de lectura
-3/-
Métodos de lectura de Date
Nombre Ejemplo Explicación
getDate() dia = fecha.getDate(); e!uel!e el d*a del mes.
getDay() diaSem = fecha.getDay();
e!uel!e el d*a de la semana en +ormato numérico. :a semana empie;a en domingo & le corresponde el , & se acaba el sbado c on el .
getMonth() mes = fecha.getMonth();
e!uel!e el mes en +ormato numérico. 9mpie;a a contar en el mes de enero con el , & acaba en diciembre con el 11.
getFullYear() anno = fecha.getFullYear(); e!uel!e el a,o completo escrito con sus
cuatro ci+ras.
getYear() annoCorto = fecha.getYear()
e!uel!e el a,o en formato corto7 al aAo completo se le resta 10D en +ecas anteriores al aAo 2 se muestran los dos últimos d*gitosD a partir del 2 se muestran los dos últimos d*gitos con un 1 delante. 9n #nternet 9xplorer de!uel!e el aAo completo igual )ue el anterior.
getHours() hora = getHours(); e!uel!e la -ora en +ormato de a 23.
getMinutes() minuto = getMinutes(); e!uel!e el minuto en +ormato de a (0.
getSeconds() segundo = getSeconds(); e!uel!e el segundo en +ormato de a (0.
getMilliseconds() miliseg = getMilliseconds(); e!uel!e el milisegundo en +ormato de a 000.
getTime() tiempo = getTime();
e!uel!e la cantidad de segundos transcurridos desde el 1 de enero de 10. 9s lo )ue se conoce como tiempo .nix. Se emplea abitualmente para clculos con +ecas
getTimezoneOffset() local = getTimezoneOffset();
e!uel!e la diferencia -oraria expresada en minutos,entre la ;ona en la )ue estamos & la ora o+icial internacional o del meridiano de @reenFic
Los métodos de lectura empiezan todos por la palabra get, y en el paréntesis no
pondremos ningún argumento.
Obtenemos mediante estos métodos las diferentes partes de una fecha. Tal vez los más problemáticos sean los meses y los días de la semana. Podemos usar para mostrarlos mejor un array donde hayamos guardado los nombres de los meses, y otro array con los días de la semana. Para mostrarlos hacemos referencia a los elementos de estos arrays con los números obtenidos en los métodos.
Otro concepto nuevo es el del "tiempo Unix". Esta es la forma que tienen los ordenadores de manejar el tiempo. Toda fecha se puede convertir en un único número de "tiempo Unix". El tiempo Unix se empieza a contar en milisegundos a partir del 1 de enero de 1970 a 0 horas, 0 min. 0 seg. Toda fecha anterior será un número negativo. El tiempo Unix nos permite hacer operaciones matemáticas con fechas.
6.4.2. Métodos de escritura.
Los métodos de escritura permiten modificar parte de una fecha o la fecha completa, reescribiéndola entera o sólo en parte.
Los métodos de lectura empiezan todos porget. Si cambiamosget porset, tenemos los
-30-
Métodos de escritura de Date
Nombre Ejemplo Explicación
setDate() fecha.setDate(dia); 'ambia el d*a del mes al recibido en el
argumento.
setMonth() fecha.setMonth(mes);
'ambia el mes al indicado en el argumento. 9ste debe estar escrito en +ormato numérico 4? 9nero ... 11?iciembre5.
setFullYear() fecha.setFullYear(anno);
'ambia el a,o al indicado en el argumento. 9ste debe escribirse en formato completo 4con sus " ci+ras5.
setYear() fecha.getYear(annoCorto)
'ambia el a,o al indicado en el argumento7 9ste debe escribirse en formato corto, tal como se indicó paragetYear() .
setHours() fecha.setHours(hora); 'ambia la -ora a la indicada en el argumento.
Bsta debe escribirse en +ormato de a 23.
setMinutes() fecha.setMinutes(minuto); 'ambia el minuto al indicado en el argumento.
Bste debe escribirse en +ormato de a (0.
setSeconds() fecha.setSeconds(segundo); 'ambia el segundo al indicado en el argumento.
Bste debe escribirse en +ormato de a (0.
setMilliseconds() fecha.setMilliseconds(miliseg);
'ambia el milisegundo al indicdo en el
argumento. Bste debe escribirse en +ormato de a 000.
setTime() fecha.setTime(tiempo);
'ambia el tiempo .nix de la +eca por el indicado en el argumento. e esta manera podemos cambiar la +eca entera por la )ue representa el número indicado.
Todos los métodos de lectura tienen su correspondiente método de escritura, excepto los métodosgetDay() (dia de la semana) y getTimezoneOffset (zona horaria).
6.4.3. Operaciones con fechas
Para hacer operaciones con fechas, podemos utilizar las fechas en tiempo Unix. Hay que tener en cuenta que el tiempo Unix está en milisegundos, por lo que un día es igual a
dia = 24*60*60*1000
También podemos sumar o restar días a una fecha añadiéndolas al método correspondiente. El siguiente ejemplo indica cómo buscar qué fecha será dentro de 120 días:
fecha = new Date(); //fecha actual.
diaActual = fecha.getDate(); //dia actual del mes.
diaBuscado = diaActual + 120; //le sumamos 120 días.
fecha.setDate(diaBuscado); //pasamos el resultado a formato de fecha.