back to top

Date Javascript โ€“ gestire e manipolare date e orari

Javascript, grazie allโ€™oggetto Date() offre una serie di potenti e preziosi strumenti per manipolare date e orari.In questa lezione della nostra guida a Javascript vedremo come manipolare le date attraverso lโ€™oggeto nativo Date() ed anche attraverso alcune librerie appositamente pensate per semplificare la manipolazione di date e orari allโ€™interno di applicativi basati su Javascript.

Pubblicitร 

Premessa: recuperare e manipolare la data del client

Prima di addentrarci nellโ€™analisi dei vari metodi supportati dallโ€™oggetto Date() รจ bene ricordare che attraverso Javascript รจ possibile lavorare facendo riferimento alla data e orario settati sul browser dellโ€™utente. Non รจ possibile, invece, utilizzare come riferimento temporale la data e lโ€™ora settata sul nostro server web. Il perchรจ di questa caratteristica รจ di semplice comprensione: Javascript รจ un linguaggio lato-client รจ pertanto il suo ambito di esecuzione corrisponde al browser dellโ€™utente e non al web server (salvo che venga utilizzato lato server come accade con Node.js).

Utilizzare lโ€™oggetto Date()

Per utilizzare lโ€™oggetto Date() รจ, prima di tutto, necessario creare una variabile a cui assegnare lโ€™oggetto attraverso lโ€™apposito costruttore:

var miadata = new Date();

Tutti i metodi dellโ€™oggetto saranno ora associati alla variabile al cui interno abbiamo istanziato, appunto, lโ€™oggetto Date().

I metodi dellโ€™oggetto Date()

Lโ€™oggetto Date() รจ davvero molto ricco di metodi per la manipolazione di date e orari, in questa sede crercheremo di analizzare i principali, ovvero:

Metodi GET

I metodi della famiglia โ€œgetโ€ sono quelli utilizzati per recuperare un dato valore relativo ad una data o ad un orario, i piรน usati sono:

  • getDate() โ€“ restituisce il numero del giorno corrente nel mese (1 -31);
  • getDay() โ€“ restituisce il numero del giorno corrente nella settimana (0 = domenica; 1 = lunedรฌ; 2 = martedรฌ; ecc.);
  • getMonth() โ€“ restituisce il numero del mese corrente (0 = gennaio; 1 = febbraio; 2 = marzo; ecc.);
  • getFullYear() โ€“ restituisce lโ€™anno corrente;
  • getHours() โ€“ restituisce lโ€™ora corrente (0 โ€“ 23);
  • getMinutes() โ€“ restituisce il minuto corrente (0 โ€“ 59);
  • getSeconds() โ€“ restituisce il secondo corrente (0 โ€“ 59);
  • getTime() โ€“ restituisce il valore corrente del timestamp;

Vediamo un esempio:

var miadata = new Date();
var gg = miadata.getDate();
var mm = miadata.getMonth();
var yyyy = miadata.getFullYear();
document.write(gg + '/' + (mm+1) + '/' + yyyy);

Metodi SET

I metodi della famiglia โ€œsetโ€ sono quelli utilizzati per modificare (nel nostro script) uno o piรน valori relativi alla data o allโ€™orario impostati nel browser, i piรน usati sono:

  • setDate() โ€“ imposta arbitrariamente il numero del giorno corrente nel mese;
  • setDay() โ€“ imposta arbitrariamente il numero del giorno corrente nella settimana;
  • setMonth() โ€“ imposta arbitrariamente il numero del mese corrente;
  • setFullYear() โ€“ imposta arbitrariamente lโ€™anno corrente;
  • setHours() โ€“ imposta arbitrariamente lโ€™ora corrente;
  • setMinutes() โ€“ imposta arbitrariamente il minuto corrente;
  • setSeconds() โ€“ imposta arbitrariamente il secondo corrente;

Vediamo un esempio di come settare, ai fini del nostro script, una data arbitraria:

var miadata = new Date();

// imposto arbitrariamente il giorno corrente al 25 del mese...
miadata.setDate(20);

// ...il mese a dicembre... Buon Natale ๐Ÿ˜‰
miadata.setMonth(11);

/*
Ora svolgo una serie di operazioni sulle date
avendo come riferimento la data impostata arbitrariamente
/*

Metodi di conversione

Si tratta di una serie di metodi utilizzati per convertire un oggetto data in qualcosโ€™altro. I piรน noti sono:

  • toISOString() โ€“ converte lโ€™oggetto data in una stringa di testo utiizzando lo standard ISO per la definizione delle date;
  • toLocaleDateString() โ€“ converte lโ€™oggetto data in una stringa di testo contenente la sola data (non verrร  compreso lโ€™orario) utilizzando le impostazioni locali del vostro browser (in poche parole vdrete una data scritta in italiano, se questa รจ la vostra lingua ovviamente);
  • toLocaleString() โ€“ converte lโ€™oggetto data in una stringa di testo con data e orario utilizzando le impostazioni locali del vostro browser;
  • toString() โ€“ converte lโ€™oggetto data in una stringa di testo;

Altri metodi dellโ€™oggetto Date()

Oltre a quelli citati, lโ€™oggetto date() dispone di altri metodi che non rientrano nelle categorie viste sopra; il piรน importante di questi รจ sicuramente parse() il quale converte una stringa contenente una data in un valore di timestamp.

Il metodo parse() non necessitร  che lโ€™oggetto Date() venga istanziato in una variabile:

var ts = Date.parse('11 November, 2014');

Utilizzare librerie ad hoc per la gestione delle date con Javascript

La gestione delle date, come forse avrete intuito arrivati al termine di questa lezione, รจ probabilmente uno dei compiti piรน noiosi per chi deve realizzare uno script basato su JavaScript, non nego che tali procedure possano entusiasmare lo sviluppatore nei casi in cui si debbano creare applicazioni particolarmente complesse ma, sfide a parte, avendo a disposizione un libreria in grado di svolgere velocemente procedure di parsing, manipolazione e formattazione delle date, digitare il nostro codice diventerร  sicuramente piรน semplice e veloce.

XDate

Tra le numerose soluzioni disponibili in Rete a questo scopo voglio segnalare XDate, una library JS standalone (ebbene si, niente jQuery questa volta!) che ha innanzitutto la vantaggiosa caratteristica di pesare appena 3 Kb se sotto forma di archivio compresso (con algoritmo GZip); tra le funzionalitร  messe a disposizione da XDate ve ne sono alcune che potranno essere sfruttate frequentemente, come per esempio:

  • il calcolo delle differenze tra date;
  • la possibilitร  di visualizzare gli output prodotti in diversi formati;
  • la manipolazione dei valori UTC (tempo coordinato universale);
  • la possibilitร  di includere la libreria in applicazioni di terze parti.

XDate รจ un progetto gratuito ed รจ utilizzabile liberamente. La libreria รจ scaricabile da Github oppure dal sito ufficiale del progetto dove รจ disponibile anche una buona documentazione circa il suo utilizzo.

Moment.js

Se avete necessitร  di una soluzione semplice ed efficente per la gestione delle date, vi suggerisco di mettere alla prova Moments.js; si tratta di una libreria basata sul linguaggio JavaScript che mette a disposizione numerose funzionalitร  utili per la lettura, la manipolazione e la formattazione di date e orari. Per scaricarla, โ€œpesaโ€ soltanto 18 Kb in versione Full Source, sarร  possibile recarsi sul sito ufficiale del progetto o clonarne il repository tramite Git:

Moment.js potrร  essere utilizzato tramite browser cosi come allโ€™interno di un ambiente server event-driven basato su Node.JS; sono disponibili numerosi metodi per la restituzione delle date in differenti formati e per effettuare calcoli come per esempio gli intervalli di tempo, ad esempio:

var halloween = moment([2019, 10, 31]);
console.log(halloween.fromNow());

Permetterร  di calcolare il numero di giorni passati dal 31 ottobre 2019 ad oggi; รจ inoltre supportata la gestione dei Timestamp:

var day = moment(1318781876406);

Moment.js supporta il multilinguaggio, eventuali lingue mancanti potranno essere aggiunte editando un apposito file JavaScript.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).