# JavaScript/Oggetto Date

JavaScript
Copertina Tutti i moduli · Sviluppo
* IntroduzioneJavaScript/Introduzione
* Il nostro primo programmaJavaScript/Il nostro primo programma
* Tipi di dati e variabiliJavaScript/Tipi di dati e variabili
* Operatori e castingJavaScript/Operatori e casting
* Le strutture di controllo
** SelezioneJavaScript/Selezione
** IterazioneJavaScript/Iterazione
* Funzioni definite dall'utenteJavaScript/Funzioni definite dall'utente
* Programmazione ad oggettiJavaScript/Oggetti
** Oggetto StringJavaScript/Oggetto String
** Oggetto MathJavaScript/Oggetto Math
** Oggetto DateJavaScript/Oggetto Date
** Oggetto ArrayJavaScript/Oggetto Array
* CookieJavaScript/Cookie
* TimerJavaScript/Timer
* L'oggetto windowJavaScript/BOM
** Gli eventi nel BOMJavaScript/Gli eventi nel BOM
** Oggetto documentJavaScript/Oggetto document
** Altri oggetti del BOMJavaScript/Altri oggetti del BOM
* Il Document Object ModelJavaScript/DOM
** Proprietà e metodiJavaScript/Proprietà e metodi del DOM
** Gli eventi nel DOMJavaScript/Gli eventi nel DOM
* Espressioni regolariJavaScript/Espressioni regolari
* AJAX
** Introduzione ad AJAXJavaScript/Introduzione ad AJAX
** Usare AJAXJavaScript/Usare AJAX
* Costruttori e prototipiJavaScript/Costruttori e prototipi
* AppendiceJavaScript/Appendice
* CreditiJavaScript/Crediti
Modifica il sommario
L'oggetto Date permette di gestire in modo semplice e veloce le date; nella pratica, un'istanza della classe Date identifica una data e le funzionalità della classe permettono di aggiungere o sottrarre anni, mesi o giorni o recuperarne il valore.

## Costruttore

Il metodo più semplice per creare una data è:
Nel caso non si passino valori al costruttore, verrà creata un oggetto Date contenente la data e l'ora corrente. Altrimenti possiamo creare date precise con altri metodi:
* fornendo il numero di millisecondi passati dalla mezzanotte del primo gennaio 1970 (questo metodo è macchinoso ma è quello che più si avvicina al metodo con cui il computer ragiona con le date). Questo valore è chiamato timestamp.
* fornendo una stringa che indichi la data, ad esempio:
    Usando il metodo descritto nel secondo esempio, bisogna fare attenzione in quanto, essendo JavaScript eseguito con le impostazioni del client, per un utente USA invece che il 10 luglio 2007 la data sarà 7 ottobre 2007
* l'ultimo metodo è il migliore in quanto affidabilità e praticità messe assieme. La sintassi è:
    Crea un oggetto data in base ai parametri passati; normalmente è possibile omettere l'ultimo parametro. Attenzione, gennaio è il mese 0 e non 1 e di conseguenza anche gli altri cambiano.

## Metodi
### Recuperare i valori della data

* getDay: restituisce un numero da 0 a 6 corrispondente al giorno della settimana della data (Domenica è 0, Lunedì 1, ... Sabato 6)
* getDate: restituisce il giorno del mese
* getMonth: restituisce il numero del mese (Gennaio è 0, Dicembre è 11)
* getFullYear: restituisce il numero dell'anno con quattro cifre.
Visti questi metodi, possiamo già creare una funzione che restituisca una stringa contenente la data formattata. La funzione prende come parametro un oggetto Date e formatta la data in esso contenuta:
Possiamo usare la funzione in questi modi:
La funzione potrebbe sembrare inutile data l'esistenza del metodo dell'oggetto Date toLocaleString che restituisce una stringa contenente la data formattata secondo le impostazioni locali dell'utente; tuttavia, per questo motivo, ad esempio, un utente inglese invece che martedì 10 luglio 2007 otterrebbe Tuesday, July 10, 2007 00:00:00.

### Impostare i valori della data

L'oggetto Date permette inoltre di modificare la data memorizzata nell'oggetto Date tramite i metodi setDate, setMonth e setFullYear. Questi metodi sono molto utili, perché hanno la caratteristica di ragionare come è giusto fare per le date. Ad esempio:
In questo esempio impostiamo come giorno del mese di aprile il valore di 31, nonostante aprile conti solo 30 giorni. JavaScript lo sa e per questo porta la data al 1 di maggio. Questa funzionalità è spesso usata insieme ai metodi per ottenere le date:

### Lavorare con l'ora

L'oggetto Date mette a disposizione funzioni analoghe anche per gestire le ore:
* getHours, getMinutes, getSeconds e getMilliseconds restituiscono rispettivamente l'ora, i minuti, i secondi e i millisecondi dell'oggetto Date. Ad esempio:
Il metodo getMilliseconds permette anche di cronometrare l'esecuzione di una porzione di codice o il caricamento della pagina HTML. Inseriamo in testa alle istruzioni da cronometrare il codice:
In questo modo salviamo i secondi e i millisecondi del momento in cui inizia il caricamento; poi inseriamo in fondo alla pagina:

### Gestire i fusi orari

Tutte le funzioni che abbiamo visto lavorano sull'ora dell'utente o su quella impostata dalla pagina web. Non abbiamo però considerato che Internet è una rete che coinvolge centinaia di paesi e quasi tutti i fusi orari del nostro pianeta; per questo motivo JavaScript mette a disposizione delle funzioni basate sull'UTC (Universal Time Coordination), una convenzione precedentemente nota come GMT (Greenwich Mean Time) che rappresenta la data basandosi su quella del meridiano 0, passante per la famosa località di Greenwich. Ovviamente anche queste funzioni sono basate su una corretta configurazione del computer del client.
I metodi UTC ricalcano i metodi per il locale; per impostare l'ora UTC è necessario ad esempio usare il metodo setUTCHour; esiste inoltre un metodo toUTCString che restituisce l'ora formattata secondo le convenzioni UTC e un metodo getTimeZoneOffset che restituisce in minuti la differenza di ora tra il fuso di Greenwich e quello dell'utente (può essere anche negativo).