Формат даты и времени

Flash Player 10.1 и более поздних версий, Adobe AIR 2.0 и более поздних версий

Формат отображения значений даты и времени также значительно изменяется в зависимости от региона. Например, здесь приводится способ отображения значения даты (второе января 1962 года, 13:01) в коротком формате для определенных локалей:

Локаль

Формат даты и времени

en-US (английский, США)

1/2/62 1:01pm

fr-FR (французский, Франция)

2/1/62 13:01

ja-JP (японский, Япония)

1962/2/1 13:01

Использование класса DateTimeFormatter

Класс DateTimeFormatter форматирует значения Date в строки даты и времени в соответствии с нормами, принятыми для определенной локали.

Форматирование осуществляется на основе шаблонной строки, содержащей последовательность букв, заменяемых значениями даты или времени. Например, в шаблоне «yyyy/MM» символы «yyyy» заменяются на четырехзначное представление года, после которого следует символ «/» и двухзначное числовое представление месяца.

Шаблонная строка должна быть явно задана с помощью метода setDateTimePattern(). Однако лучше использовать автоматическое задание шаблона в соответствии с пользовательской локалью и настройками операционной системы. Такой метод помогает обеспечить соответствие культурным нормам

Класс DateTimeFormatter может представлять значения даты и времени в трех стандартных стилях (LONG, MEDIUM и SHORT) и также поддерживает использование шаблона CUSTOM. Один стиль можно использовать для значения даты, а второй — для значения времени. Фактические шаблоны, используемые для каждого стиля, незначительно варьируются в зависимости от операционной системы.

Стили можно определить при создании объекта DateTimeFormatter. Если параметры стиля не указаны, для них по умолчанию задается значение DateTimeStyle.LONG. В дальнейшем можно изменить стиль с помощью метода setDateTimeStyles(), как показано в следующем примере:

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

Локализация названий месяцев и дней

Во многих приложениях используются списки названий месяцев и дней недели в представлении календаря или раскрывающихся списках.

Локализованный список названий месяцев можно извлечь с помощью метода DateTimeFormatter.getMonthNames(). В зависимости от операционной системы могут быть доступны полные и сокращенные формы. Передайте значение DateTimeNameStyle.FULL для получения полных названий месяцев. Передайте значения DateTimeNameStyle.LONG_ABBREVIATION или DateTimeNameStyle.SHORT_ABBREVIATION для получения более коротких версий.

В некоторых языках название месяца изменяется (преобразуется в родительный падеж), если стоит рядом со значением дня в формате даты. Если планируется использовать только названия месяцев, следует передать значения DateTimeNameContext.STANDALONE в метод getMonthNames(). Однако чтобы использовать названия месяцев в форматированных датах, следует передать значение 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.

Метод DateTimeFormatter.getWeekdayNames() предоставляет локализованный список названий дней недели. Метод getWeekdayNames() допускает те же параметры nameStyle и context, что и метод 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.

Помимо этого, метод getFirstWeekday() возвращает значение указателя дня, который традиционно обозначает начало недели в выбранной локали.