Formattazione di data e ora

Flash Player 10.1 e versioni successive, Adobe AIR 2.0 e versioni successive

Anche il formato di visualizzazione dei valori di data e ora varia ampiamente da una regione all'altra. Nell'esempio seguente viene mostrato come il secondo giorno di gennaio del 1962 alle 1:01 viene visualizzato in un formato breve per alcune impostazioni internazionali:

Impostazioni internazionali

Formato data e ora

en-US (Inglese, Stati Uniti)

1/2/62 1:01pm

fr-FR (Francese, Francia)

2/1/62 13:01

ja-JP (Giappone, Giapponese)

1962/2/1 13:01

Uso della classe DateTimeFormatter

La classe DateTimeFormatter consente di formattare valori di data in stringhe data e ora in base alle convenzioni di impostazioni internazionali specifiche.

La formattazione segue una stringa modello contenente le sequenze di lettere che devono essere sostituite con valori di data e ora. Nel modello “aaaa/MM”, ad esempio, i caratteri “aaaa” vengono sostituiti con un anno a quattro cifre, seguito dal carattere “/” e un mese a due cifre.

La stringa modello può essere impostata in maniera esplicita utilizzando il metodo setDateTimePattern(). Tuttavia, è preferibile lasciare che il modello venga impostato automaticamente in base alle impostazioni internazionali dell'utente e alle preferenze del sistema operativo. Questa prassi garantisce che il risultato sia culturalmente appropriato.

La classe DateTimeFormatter può rappresentare date e ore in tre stili standard (LONG, MEDIUM e SHORT) è può anche utilizzare un modello CUSTOM. Uno stile può essere utilizzato per la data e un secondo stile per l'ora. I modelli effettivi utilizzati per ogni stile possono variare in base al sistema operativo.

Potete specificare gli stili quando create un oggetto DateTimeFormatter. Se non sono specificati, i parametri dello stile vengono impostati su DateTimeStyle.LONG per impostazione predefinita. Potete modificare gli stili in seguito utilizzando il metodo setDateTimeStyles(), come mostrato nell'esempio seguente:

var date:Date = new Date(2009, 2, 27, 13, 1); 
var dtf:DateTimeFormatter = new DateTimeFormatter("en-US", 
    DateTimeStyle.LONG, DateTimeStyle.LONG); 
 
var longDate:String = dtf.format(date); 
trace(longDate); // March 27, 2009 1:01:00 PM 
 
dtf.setDateTimeStyles(DateTimeStyle.SHORT, DateTimeStyle.SHORT); 
var shortDate:String = dtf.format(date); 
trace(shortDate); // 3/27/09 1:01 PM

Localizzazione dei nomi dei mesi e dei giorni

Molte applicazioni utilizzano elenchi di nomi di mesi e nomi dei giorni della settimana in calendari o elenchi a discesa.

Potete recuperare un elenco localizzato di nomi di mesi utilizzando il metodo DateTimeFormatter.getMonthNames(). In base al sistema operativo, possono essere disponibili formati completi e abbreviati. Passate il valore DateTimeNameStyle.FULL per ottenere i nomi dei mesi a lunghezza intera. Passate i valori DateTimeNameStyle.LONG_ABBREVIATION o DateTimeNameStyle.SHORT_ABBREVIATION per ottenere versioni abbreviate.

In alcune lingue, un nome di mese cambia (nella sua forma genitiva) quando viene inserito accanto al valore di giorno in un formato data. Se prevedete di utilizzare solo i nomi dei mesi, passate il valore DateTimeNameContext.STANDALONE al metodo getMonthNames(). Per utilizzare i nomi dei mesi nelle date formattate, tuttavia, passate il valore DateTimeNameContext.FORMAT.

var dtf:DateTimeFormatter = new DateTimeFormatter("fr-FR"); 
var months:Vector.<String> = dtf.getMonthNames(DateTimeNameStyle.FULL, 
        DateTimeNameContext.STANDALONE); 
trace(months[0]); // janvier 
months = dtf.getMonthNames(DateTimeNameStyle.SHORT_ABBREVIATION, 
         DateTimeNameContext.STANDALONE); 
trace(months[0]); // janv.

Il metodo DateTimeFormatter.getWeekdayNames() fornisce un elenco localizzato dei nomi dei giorni della settimana. Il metodo getWeekdayNames() accetta gli stessi parametri nameStyle e di contesto del metodo getMonthNames().

var dtf:DateTimeFormatter = new DateTimeFormatter("fr-FR"); 
var weekdays:Vector.<String> = dtf.getWeekdayNames(DateTimeNameStyle.FULL, 
           DateTimeNameContext.STANDALONE); 
trace(weekdays[0]); // dimanche 
weekdays = dtf.getWeekdayNames(DateTimeNameStyle.LONG_ABBREVIATION, 
           DateTimeNameContext.STANDALONE); 
trace(weekdays[0]); // dim.

Inoltre, il metodo getFirstWeekday() restituisce il valore di indice del giorno che in genere segna l'inizio della settimana nelle impostazioni internazionali selezionate.