Gestione di date e orariFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive Tutte le funzioni relative alla gestione di date di calendario e orari di ActionScript 3.0 sono concentrate nella classe Date di livello principale. La classe Date contiene metodi e proprietà che consentono di gestire date e orari sia nell'ora universale (UTC) che nell'ora locale specifica di un determinato fuso orario. UTC è una definizione di ora standard che corrisponde all'ora di Greenwich o GMT (Greenwich Mean Time). Creazione di oggetti DateLa classe Date vanta uno dei metodi delle funzioni di costruzione più versatile di tutte le classi principali. È possibile chiamarlo in quattro diversi modi. In primo luogo, se non vengono forniti parametri, la funzione di costruzione Date() restituisce un oggetto Date contenente la data e l'ora corrente, nell'ora locale basata sul fuso orario in cui vi trovate. Di seguito viene fornito un esempio: var now:Date = new Date(); Secondo, se viene fornito un solo parametro numerico, la funzione di costruzione Date() lo interpreta come il numero di millesimi di secondo dal 1 gennaio 1970 e restituisce un oggetto Date corrispondente. Notate che il valore in millesimi di secondo trasmesso viene interpretato come il numero di millisecondi dal 1 gennaio 1970, in UTC. Tuttavia, l'oggetto Date mostra i valori nel fuso orario locale, a meno che non si utilizzino metodi specifici di UTC per recuperarli e visualizzarli. Se create un nuovo oggetto Date utilizzando un singolo parametro in millesimi di secondo, accertarsi di calcolare la differenza di fuso orario tra l'ora locale e UTC. Le istruzioni seguenti consentono di creare un oggetto Date impostato sulla mezzanotte del 1 gennaio 1970, in UTC: var millisecondsPerDay:int = 1000 * 60 * 60 * 24; // gets a Date one day after the start date of 1/1/1970 var startTime:Date = new Date(millisecondsPerDay); Terzo, è possibile trasmettere più parametri numerici alla funzione di costruzione Date(). Tali parametri vengono trattati rispettivamente come anno, mese, giorno, ora, minuto, secondo e millesimo di secondo e viene restituito un oggetto Date corrispondente. I seguenti parametri di input sono espressi in ora locale anziché in UTC. Le istruzioni seguenti consentono di creare un oggetto Date impostato sulla mezzanotte del 1 gennaio 2000, in UTC: var millenium:Date = new Date(2000, 0, 1, 0, 0, 0, 0); Infine, è possibile trasmettere un'unica stringa di parametri alla funzione di costruzione Date(). La funzione tenterà di analizzare la stringa in componenti di data o ora, quindi di restituire un oggetto Date corrispondente. Se scegliete questo approccio, è opportuno includere la funzione di costruzione Date() in un blocco try..catch per registrare eventuali errori di analisi. La funzione di costruzione Date() accetta diversi formati stringa (elencati in ActionScript 3.0 Reference for the Adobe Flash Platform (Guida di riferimento di Adobe ActionScript 3.0 per la piattaforma Adobe Flash). L'istruzione seguente consente di inizializzare un nuovo oggetto Date mediante un valore di stringa: var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");
Se la funzione di costruzione Date() non è in grado di analizzare il parametro di stringa, non verrà generata alcuna eccezione. Tuttavia, l'oggetto Date risultante conterrà un valore data non valido. Determinazione dei valori di unità di tempoÈ possibile estrarre i valori di varie unità di tempo da un oggetto Date mediante proprietà e metodi della classe Date. Ognuna delle seguenti proprietà consente di ottenere il valore di un'unità di tempo nell'oggetto Date:
Operazioni aritmetiche con data e oraLa classe Date consente di eseguire addizioni e sottrazioni con i valori di data e ora. I valori di data sono memorizzati internamente in millesimi di secondo, di conseguenza, prima di aggiungere o sottrarre un valore da oggetti Date è necessario convertirlo in millesimi di secondo. Se l'applicazione deve eseguire molte operazioni aritmetiche con date e orari, potrebbe essere utile creare costanti per conservare i valori di unità di tempo maggiormente utilizzati in millesimi di secondo, come nell'esempio seguente: public static const millisecondsPerMinute:int = 1000 * 60; public static const millisecondsPerHour:int = 1000 * 60 * 60; public static const millisecondsPerDay:int = 1000 * 60 * 60 * 24; Grazie alle unità di tempo standard, sarà più semplice eseguire operazioni aritmetiche con le date. Il codice seguente consente di impostare un valore di data su un'ora a partire dall'ora corrente mediante i metodi getTime() e setTime(): var oneHourFromNow:Date = new Date(); oneHourFromNow.setTime(oneHourFromNow.getTime() + millisecondsPerHour); Un altro modo per impostare un valore di data è creare un nuovo oggetto Date utilizzando un unico parametro di millesimi di secondo. Il codice seguente consente, ad esempio, di aggiungere 30 giorni a una data per calcolarne un'altra: // sets the invoice date to today's date var invoiceDate:Date = new Date(); // adds 30 days to get the due date var dueDate:Date = new Date(invoiceDate.getTime() + (30 * millisecondsPerDay)); Successivamente, la costante millisecondsPerDay viene moltiplicata per 30 per rappresentare l'intervallo di 30 giorni e il risultato viene sommato al valore invoiceDate utilizzato per impostare il valore dueDate. Conversione di fusi orariLe operazioni aritmetiche con data e ora risultano utili per convertire date da un fuso orario a un altro. Così funziona il metodo getTimezoneOffset(), che restituisce il valore in minuti corrispondente allo scarto del fuso orario dell'oggetto Date rispetto a UTC. Viene restituito un valore in minuti perché non tutti i fusi orari sono impostati in incrementi orari equivalenti; alcuni infatti presentano differenze di mezz'ora rispetto ai fusi orari adiacenti. Nell'esempio seguente viene utilizzata la differenza di fuso orario per convertire una data dall'ora locale all'ora UTC. La conversione viene effettuata mediante il calcolo del valore del fuso orario in millesimi di secondo, quindi effettuando una regolazione del valore Date con tale valore: // creates a Date in local time
var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");
// converts the Date to UTC by adding or subtracting the time zone offset
var offsetMilliseconds:Number = nextDay.getTimezoneOffset() * 60 * 1000;
nextDay.setTime(nextDay.getTime() + offsetMilliseconds);
|
|