Salta el contingut

L'objecte Date

Serveix per treballar amb dates i hores.

Per treballar amb l'objecte Date cal crear-ne una instància amb new indicant la data que volem representar.
Si ometem els paràmetres ens retorna la data actual del sistema.

Podem representar qualsevol altra data utilitzant el format:

any, indexMes, dia, hora, minut, segon, mil·lisegon

Tingueu en compte que...

Només l'any i el mes són obligatoris:

new Date(any, indexMes)
new Date(any, indexMes, dia)
new Date(any, indexMes, dia, hora)
new Date(any, indexMes, dia, hora, minut)
new Date(any, indexMes, dia, hora, minut, segon)
new Date(any, indexMes, dia, hora, minut, segon, mil·lisegon)

Els camps omesos es consideren com: dia 1 del mes i hora 00:00:00.000

Important!

Els mesos es numeren amb un índex a partir de 0 (gener) i fins a 11 (desembre)
Cal tenir present que hem de posar un número menys del que normalment correspondria al calendari

new Date();                    // Data i hora actuals
new Date(2010, 4);             // 01/05/2010  a les 00:00:00
new Date(2024, 11, 25);        // Dia de Nadal a les 00:00:00
new Date(2024, 0, 15, 23, 30); // 15/01/2024 a les 23:30:00

Podem posar una data fora de rang i es calcularà amb la data equivalent corresponent:

new Date(2024, 9, 0);   // 30/09/2024 (darrer dia del mes anterior)
new Date(2024, 13, 5);  // 5/02/2025 (13 = febrer de l'any següent)
new Date(2024, 0, 0);   // 31/12/2023 (darrer dia del 2023)
new Date(2024, -2, 10); // 10/11/2023 (2 mesos enrere respecte a l'any)

Tingueu en compte que...

Els objectes de tipus Date són sempre estàtics, per tant un cop creats mantenen el valor de data i hora, i no s'actualitzen sols amb el pas del temps.

Mètodes per llegir dates i hores

Consulten valors temporals, tots comencen amb el prefix get.

Dia, mes i any

  • getDate() retorna el valor numèric del dia del mes, entre 1 i 31
  • getMonth() retorna el valor numèric del mes, entre 0 (gener) i 11 (desembre)
  • getFullYear() retorna el valor numèric de l'any actual amb 4 dígits
let d = new Date(); // Data d'avui
let dia = d.getDate();
let mes = d.getMonth() + 1;
let any = d.getFullYear();

let data = `${dia} / ${mes} / ${any}`;

data =

Dia de la setmana

Amb el mètode getDay() obtenim el valor numèric del dia de la setmana entre 0 i 6, tenint en compte que es considera que la setmana comença en diumenge i per tant el dia 0 és diumenge i el 6 dissabte.

valor de getDay() dia de la setmana
0 Diumenge
1 Dilluns
2 Dimarts
3 Dimecres
4 Dijous
5 Divendres
6 Dissabte
let d = new Date(); // Data d'avui
diaSetmana = d.getDay();

diaSetmana =

Normalment voldrem fer alguna conversió a cadena per obtenir el nom del dia, per exemple:

const diesSetmana = [
    "Diumenge",
    "Dilluns",
    "Dimarts",
    "Dimecres",
    "Dijous",
    "Divendres",
    "Dissabte" ];

let d = new Date(); // Data d'avui
dia = diesSetmana[ d.getDay() ];

diaSetmana =

Hora, minut, segon i mil·lisegons

Obtenim cada part de l'hora com un valor numèric amb

  • getHours()
  • getMinutes()
  • getSeconds()
  • getMilliseconds()
let d = new Date(); // Data d'avui
let h = d.getHours();
let m = d.getMinutes();
let s = d.getSeconds();

let hora = `${h}:${m}:${s}`;

hora =

Data en referència a EPOCH

El mètode getTime() ens retorna el nombre de mil·lisegons transcorreguts des del temps de referència conegut com a EPOCH, que correspon a les 00:00:00 del dia 1 de gener de 1970.

Temps actual respecte a EPOCH =

let d = new Date(); // Data d'avui
tempsEpoch = d.getTime();

Mètodes per calcular dates i hores

Estableixen valors temporals, tots comences amb el prefix set.

Establir una data

Podem modificar qualsevol valor de la data obtinguda en instanciar un objecte Date i la resta de valors s'actualitzaran.
Tots els mètodes són anàlogs als existents per consultar una data, però canviant el prefix get per set.

Important!

Les modificacions que fem quan establim nous valors a una data només afecten a la variable que conté la instància de Date que hem creat.
NO afecten per res al rellotge del sistema!

Exemple: calcular en quin dia de la setmana cau Nadal

let d = new Date();                   // Data d'avui
d.setDate(25);                        // Canviem el dia a 25
d.setMonth(11);                       // Canviem el mes a 11 (desembre)

diaNadal = d.getDay();                // Valor numèric
diaNadal = diesSetmana[ d.getDay() ]; // Nom del dia

Aquest any Nadal cau en

Exemple: sumar dies a una data

let d = new Date();    // Data d'avui
let dia = d.getDate(); // Obtenim el dia del mes
d.setDate(dia + 75);   // Sumem dies a la data

let nouDia = d.getDate()
let nouMes = d.getMonth() + 1

D'aquí a exactament 75 dies serà el dia

Altres càlculs amb dates

Amb el mateix procediment podem sumar o bé restar tant dies com mesos, anys, hores, minuts, etc.
L'objecte Date s'encarrega de calcular la data i hora correctes automàticament, tenint en compte els canvis de mes o any, si hi ha anys de traspàs, etc.

Exemple: calcular la diferència entre dues dates

let dataAvui = new Date();
let dataNadal = new Date(dataAvui.getFullYear(), 11, 25);

let diesNadal = Math.floor( (dataNadal - dataAvui) / (24 * 60 * 60 * 1000) );

Falten dies perquè sigui Nadal

Operacions entre dates

Podem fer aquestes operacions i d'altres com comparar dates perquè Date opera sobre les dates amb el valor en referència a EPOCH, per tant internament està restant dos nombres enters.