格式化日期和時間

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 類別會根據特定地區設定的慣例,將 Date 值格式化為日期與時間字串。

模式字串包含要取代為日期或時間值的一串字母,而格式則遵循這種模式字串。例如,在「yyyy/MM」模式中,「yyyy」字元會取代為四位數年份,後面依序接著「/」字元和兩位數月份。

您可以使用 setDateTimePattern() 方法明確設定模式字串。不過,最好是根據使用者的地區設定和作業系統偏好設定,來自動設定模式。這種作法有助於確定結果符合文化。

DateTimeFormatter 可以使用三種標準樣式 (LONG、MEDIUM 和 SHORT) 代表日期和時間,也可以使用 CUSTOM 模式。其中一個樣式可以用於日期,而第二個樣式則用於時間。每個樣式使用的實際模式會因作業系統而有些許的不同。

您可以在建立 DateTimeFormatter 物件時指定樣式。如果未指定 style 參數,則會預設為 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() 方法會傳回所選取地區設定中傳統上會標示為一週開始之日期的索引值。