Documentazione di Flash CS3 |
|||
| Programmazione in ActionScript 3.0 > Operazioni con data e ora > Gestione di date e orari | |||
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).
La 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 ci si trova. 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. Si noti 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 utilizzi metodi specifici di UTC per recuperarli e visualizzarli. Se si crea 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; // ottieni un oggetto Date un giorno dopo la data di inizio 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 si sceglie questo sistema, si consiglia di includere la funzione di costruzione Date() in un blocco try..catch per registrare eventuali errori di analisi. La funzione di costruzione Date() accetta vari formati di stringa, come illustrato in Guida di riferimento del linguaggio e ai componenti ActionScript 3.0. 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.
È 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:
fullYear month, espressa in formato numerico (da 0 per gennaio a 11 per dicembre)date, corrispondente al numero di calendario del giorno del mese, nell'intervallo da 1 a 31day, giorno della settimana in formato numerico (0 per domenica)hours, da 0 a 23minutessecondsmillisecondsLa classe Date offre vari metodi per determinare ciascuno di questi valori. Per ottenere il valore mese di un oggetto Date, ad esempio, sono disponibili quattro diversi modi:
monthgetMonth()monthUTCgetMonthUTC()Tutte e quattro le modalità si equivalgono in termini di efficacia, quindi è possibile scegliere il metodo preferenziale in base ai requisiti dell'applicazione.
Le proprietà elencate rappresentano tutte componenti del valore data globale. Ad esempio, la proprietà dei millesimi di secondo non sarà mai superiore a 999, poiché, quando raggiunge il valore 1000, la proprietà secondi aumenta di 1 e la proprietà millesimi di secondo riparte dal valore 0.
Per ottenere il valore dell'oggetto Date in termini di millesimi di secondo dal 1 gennaio 1970 (UTC), è possibile utilizzare il metodo getTime(). La sua controparte, il metodo setTime(), consente di modificare il valore di un oggetto Date esistente utilizzando i millesimi di secondo dal 1 gennaio 1970 (UTC).
La 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. Ad esempio, il codice seguente consente di aggiungere 30 giorni a una data per calcolarne un'altra:
// Imposta la data fattura sulla data corrente var invoiceDate:Date = new Date(); // Aggiunge 30 giorni per ottenere la data di scadenza 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.
Le 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:
// Crea un oggetto Date nell'ora locale
var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");
// Converte Date in UTC aggiungendo o sottraendo la differenza di fuso orario
var offsetMilliseconds:Number = nextDay.getTimezoneOffset() * 60 * 1000;
nextDay.setTime(nextDay.getTime() + offsetMilliseconds);
Flash CS3
Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti
Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000073.html