设置日期和时间格式

Flash Player 10.1 和更高版本,Adobe AIR 2.0 和更高版本

根据区域的不同,日期和时间值的显示格式也大不相同。例如,以下是如何以短格式显示某些区域设置的 1962 年 1 月 2 日的 1:01 PM:

区域设置

日期和时间格式

en-US(英语,美国)

1/2/62 1:01pm

fr-FR(法语,法国)

2/1/62 13:01

ja-JP(日语,日本)

1962/2/1 13:01

使用 DateTimeFormatter 类

DateTimeFormatter 类根据特定区域设置的约定将日期值格式化为日期和时间字符串。

格式化遵循模式字符串,该模式字符串包含要用日期或时间值替换的字母序列。例如,在“yyyy/MM”模式中,字符“yyyy”被替换为 4 位数字的年份,后面跟有“/”字符和 2 位数字的月份。

可以使用 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 和上下文参数与 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() 方法返回某个日期的索引值,这一天传统上标记为所选区域设置中一周开始的那天。