Formatera datum och tid

Flash Player 10.1 och senare, Adobe AIR 2.0 och senare

Visningsformatet för värden för datum och tid varierar också mycket mellan olika regioner. I exemplet nedan visas hur värdet för den andra januari 1962, klockan 13:01, visas i kortformat i olika språkområden:

Språk

Datum- och tidsformat

en-US (engelska, USA)

1/2/62 1:01pm

fr-FR (franska, Frankrike)

2/1/62 13:01

ja-JP (japanska, Japan)

1962/2/1 13:01

Använda klassen DateTimeFormatter

Klassen DateTimeFormatter formaterar datumvärden till strängar för datum och tid i enlighet med konventionerna för ett visst språkområde.

Formateringen följer en mönstersträng som innehåller bokstavskombinationer som ersätts med värden för datum och tid. I mönstret "yyyy/MM" ersätts tecknen "yyyy" med ett fyrsiffrigt årtal, följt av tecknet "/", och ett tvåsiffrigt månadstal.

Mönstersträngen kan anges explicit med metoden setDateTimePattern(). Det är emellertid bäst att mönstret ställs in automatiskt enligt användarens inställningar för språkområde och operativsystem. Detta resulterar i att inställningarna görs till rätt kulturområde.

DateTimeFormatter kan visa datum och tid i tre olika standardformat: Långt format (LONG), medellångt format (MEDIUM) och kort format (SHORT), och det går även att använda ett anpassat mönsterformat (CUSTOM). Ett format kan användas för datum och ett annat för tid. De faktiska mönstren som används för varje format kan variera något mellan olika operativsystem.

Du kan ange formatet när du skapar ett DateTimeFormatter-objekt. Om inga formatparametrar är angivna kommer de som standard att anges till DateTimeStyle.LONG. Du kan ändra formaten senare med metoden setDateTimeStyles(), enligt exemplet nedan:

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

Lokalisera namn på månader och dagar

Många program använder listor som innehåller namn på månader och veckodagar i kalendervisningar eller listrutor.

Du kan hämta en lokaliserad lista med namn på månader med metoden DateTimeFormatter.getMonthNames(). Beroende på olika operativsystem finns fullständiga och förkortade former tillgängliga. Skicka värdet DateTimeNameStyle.FULL om du vill hämta fullständiga namn på månader. Skicka värdena DateTimeNameStyle.LONG_ABBREVIATION eller DateTimeNameStyle.SHORT_ABBREVIATION om du vill hämta kortare versioner.

För vissa språk ändras namnet på månaden (till genitivform) när det står bredvid värdet för dag i ett datumformat. Om du planerar att använda namnen på månaderna fristående, ska du skicka värdet DateTimeNameContext.STANDALONE till metoden getMonthNames(). Om du emellertid använder månadsnamnen i formaterade datum, skickar du värdet 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.

Metoden DateTimeFormatter.getWeekdayNames() tillhandahåller en lokaliserad lista av namn på veckodagar. Metoden getWeekdayNames() accepterar samma parametrar för nameStyle och context som metoden 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.

Dessutom returnerar metoden getFirstWeekday() indexvärdet för den dag som vanligtvis markerar början på veckan i det valda språkområdet.