日付と時刻の形式の設定

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」という文字列が 4 桁の年に置き換えられ、その後に「/」および 2 桁の月が続きます。

このパターン文字列は、setDateTimePattern() メソッドを使用して明示的に設定できます。ただし、パターンの設定は、ユーザーのロケールとオペレーティングシステムの設定に応じて自動的に行うことをお勧めします。この方法を使用すると、文化的に適切な結果が確実に得られます。

DateTimeFormatter は 3 つの標準スタイル(LONG、MEDIUM、SHORT)で日付と時刻を表すことができ、CUSTOM パターンを使用することもできます。1 つのスタイルを日付に使用し、2 つ目のスタイルを時刻に使用できます。各スタイルに使用する実際のパターンは、オペレーティングシステムによっていくらか異なります。

スタイルは、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() メソッドは、getMonthNames() メソッドが受け取るのと同じ nameStyle およびコンテキストパラメーターを受け取ります。

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() メソッドは、選択されたロケールにおいて慣習となっている週の最初の日のインデックス値を返します。