モジュール java.base
パッケージ java.text

クラスDateFormat

java.lang.Object
java.text.Format
java.text.DateFormat
すべての実装されたインタフェース:
Serializable, Cloneable
直系の既知のサブクラス:
SimpleDateFormat

public abstract class DateFormat extends Format
DateFormatは、言語に依存しない方法で日付または時刻をフォーマットおよび解析する、日付/時刻フォーマット・サブクラスの抽象クラスです。 SimpleDateFormatなどの日時フォーマット・サブクラスによって、フォーマット(日付→テキスト)、解析(テキスト→日付)および正規化を行うことができます。 日付は、Dateオブジェクトまたは1970年1月1日グリニッジ標準時00:00:00からのミリ秒で表現されます。

DateFormatは、デフォルトまたは指定されたロケールと多数の書式設定スタイルに基づいて、デフォルトの日付/時間フォーマッタを取得するための静的ファクトリ・メソッドを提供します。 フォーマット・スタイルにはFULLLONGMEDIUM、およびSHORTがあります。 styleパラメータを持つファクトリ・メソッドの場合、styleが定義済の書式設定スタイルのいずれとも等しくないと、 IllegalArgumentExceptionがスローされます。 これらのスタイルの詳細と使用例については、メソッドの説明を参照してください。

DateFormatは、すべてのロケールの日付についてフォーマットおよび解析を支援します。 コードは、月、曜日、カレンダ・フォーマット、陰暦太陽暦などロケールの慣習とは完全に独立しています。

現在のロケール用に日付をフォーマットするためには、次のstaticファクトリ・メソッドの1つを使用します。

myString = DateFormat.getDateInstance().format(myDate);

複数の日付をフォーマットする場合には、そのフォーマットを取得して、それを複数回使う方が効率的です。これにより、システムがローカルの言語と国のルールを何度も取得する必要がなくなります。

DateFormat df = DateFormat.getDateInstance();
for (Date myDate : dates) {
    output.println(df.format(myDate) + "; ");
}

ある日付を異なるロケールに対してフォーマットする場合には、getDateInstance()の呼出しにその日付を指定します。

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);

指定されたロケールに"ca" (calendar)、"rg" (リージョン・オーバーライド)または"tz" (timezone) 「Unicode拡張」(あるいはその両方)が含まれる場合、書式設定のカレンダ、国またはタイムゾーン(あるいはその両方)がオーバーライドされます。 "ca"と"rg"の両方が指定されている場合、"ca"拡張子のカレンダは、"rg"拡張子の暗黙のものよりも優先されます。

さらに、解析のためにDateFormatを使用できます。

myDate = df.parse(myString);

その国の通常の日付フォーマットを取得するには、getDateInstanceを使用します。 ほかにも使用可能なstaticファクトリ・メソッドがあります。 その国の時刻フォーマットを取得するには、getTimeInstanceを使用します。 日付と時刻フォーマットを取得するには、getDateTimeInstanceを使用します。 結果の長さを制御するために、これらのファクトリ・メソッドを異なるオプションで渡すことができます(SHORTからMEDIUMLONGFULLへ)。 正確な結果はロケールに依存しますが、一般的には次のようになります。

  • SHORTは、12.13.523:30pmなど、最も短く、主に数値です。
  • MEDIUMはそれより長い形式で、Jan 12, 1952など
  • LONGがさらに長い(January 12, 19523:30:32pmなど)
  • FULLは最長(Tuesday, April 12, 1952 AD or 3:30:42pm PSTなど)です。
テキストを含むフィールドでは、通常は省略されたテキスト形式がMEDIUMオプションとともに使用され、完全なテキスト形式がLONGおよびFULLオプションとともに使用されます。

必要に応じて、フォーマットにタイムゾーンを設定することもできます。 フォーマットや解析をさらに制御する場合(または、ユーザーにそのような制御を与える場合)には、ファクトリ・メソッドから得たDateFormatSimpleDateFormatにキャストする方法を試行することもできます。 この方法はほとんどの国に有効ですが、そうでない場合に備えて、tryブロックに入れるようにしてください。

さらに、parseとformatメソッドの形式をParsePositionFieldPositionとともに使用すれば、次のことが可能です。

  • 文字列のそれぞれの部分を段階的に解析する。
  • 特定のフィールドを位置合わせしたり、画面上のどこが選択状態なのかを調査する。

Synchronization

日付フォーマットは同期化されません。 スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。 複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。

APIのノート:
DateTimeFormatterを不変でスレッド・セーフな代替として使用することを検討してください。
実装要件:
導入されたバージョン:
1.1
関連項目: