Formatando data e hora

Flash Player 10.1 e posterior, Adobe AIR 2.0 e posterior

O formato de exibição de valores de data e tempo também variam muito de uma região para outra. Por exemplo, aqui está como o segundo dia de janeiro, de 1962 às 1:01 PM é exibido em um formato curto para certas localidades:

Localidade

Formato de data e hora

en-US (English, USA)

2/1/62 1:01pm

fr-FR (France, French)

2/1/62 13:01

ja-JP (Japan, Japanese)

1962/2/1 13:01

Utilizando a classe DateFormatter

A classe DateTimeFormatter formata valores Date em strings de data e hora de acordo com as convenções de uma localidade especifica.

A formatação é orientada por uma string de padrão que contém sequências de letras que serão substituídas por valores de data ou tempo. Por exemplo, no padrão "aaaa/MM", os caracteres o "aaaa" será substituído por um ano de quatro dígitos, seguido pelo caractere "/" e um mês de dois dígitos.

A string de padrão pode ser definida explicitamente utilizando o método setDateTimePattern(). No entanto, é melhor permitir que o padrão seja definido automaticamente, de acordo com a localidade do usuário e as preferências do sistema operacional. Esta prática ajuda a garantir que o resultado seja apropriado de forma cultural.

O DateTimeFormatter pode representar datas e horários em três estilos padrão (LONG, MEDIUM e SHORT) além de poder utilizar um padrão CUSTOM. Um padrão pode ser utilizado para data, e o secundo para a hora. Os padrões reais utilizados para cada estilo podem variar um pouco entre sistemas operacionais.

É possível especificar estilos ao criar um objeto DateTimeFormatter. Caso os parâmetros de estilo não estejam especificados, então eles serão definidos para DateTimeStyle.LONG por padrão. Você pode alterar os estilos posteriormente utilizando o método setDateTimeStyles(), como mostrado no seguinte exemplo:

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

Localizando nomes de meses e de dias

Muitos aplicativos utilizam listagens de nomes de meses e os nomes dos dias da semana em exibições de calendário ou listas pull-down.

Você pode obter uma lista localizada dos nomes dos meses utilizando o método DateTimeFormatter.getMonthNames(). Dependendo do sistema operacional, formas completas e abreviadas podem estar disponíveis. Passe o valor DateTimeNameStyle.FULL para obter nomes completos de meses. Passe os valores DateTimeNameStyle.LONG_ABBREVIATION ou DateTimeNameStyle.SHORT_ABBREVIATION para obter uma versão menor.

Em alguns idiomas, o nome do mês é mudado (em sua forma genitiva) quando colocado ao lado de um valor de dia em um formato de data. Caso planeje utilizar os nomes de meses separados, deverá passar o valor DateTimeNameContext.STANDALONE para o método getMonthNames(). No entanto, para utilizar nomes de mês em datas formatadas, passe o valor 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.

O método DateTimeFormatter.getWeekdayNames() fornece uma lista localizada dos nomes dos dias da semana. O método getWeekdayNames() aceita os mesmos parâmetros de contexto e nameStyle que o método getMonthNames() aceita.

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.

Além disso, o método getFirstWeekday() retorna o valor de índice do dia que tradicionalmente marca o começo da semana na localidade selecionada.