public abstract class DateFormat extends Format
DateFormat
は、言語に依存しない方法で日付または時間をフォーマットおよび解析する、日時フォーマット・サブクラスの抽象クラスです。SimpleDateFormat
などの日時フォーマット・サブクラスによって、フォーマット(日付→テキスト)、解析(テキスト→日付)および正規化を行うことができます。日付は、Date
オブジェクトまたは1970年1月1日グリニッジ標準時00:00:00からのミリ秒で表現されます。
DateFormat
は、デフォルト値、指定されたロケール、いくつかのフォーマット・スタイルに基づいて、デフォルトの日時フォーマッタを取得する多くのクラス・メソッドを提供します。フォーマット・スタイルにはFULL
、LONG
、MEDIUM
、およびSHORT
があります。これらのスタイルの詳細と使用例については、メソッドの説明を参照してください。
DateFormat
は、すべてのロケールの日付についてフォーマットおよび解析を支援します。コードは、月、曜日、カレンダ・フォーマット、陰暦太陽暦などロケールの慣習とは完全に独立しています。
現在のロケール用に日付をフォーマットするためには、次のstaticファクトリ・メソッドの1つを使用します。
myString = DateFormat.getDateInstance().format(myDate);
複数の日付をフォーマットする場合には、そのフォーマットを取得して、それを複数回使う方が効率的です。これにより、システムがローカルの言語と国のルールを何度も取得する必要がなくなります。
DateFormat df = DateFormat.getDateInstance(); for (int i = 0; i < myDate.length; ++i) { output.println(df.format(myDate[i]) + "; "); }
ある日付を異なるロケールに対してフォーマットする場合には、getDateInstance()
の呼出しにその日付を指定します。
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
さらに、解析のためにDateFormatを使用できます。
myDate = df.parse(myString);
その国の通常の日付フォーマットを取得するには、getDateInstance
を使用します。ほかにも使用可能なstaticファクトリ・メソッドがあります。その国の時刻フォーマットを取得するには、getTimeInstance
を使用します。日付と時刻フォーマットを取得するには、getDateTimeInstance
を使用します。結果の長さを制御するために、これらのファクトリ・メソッドを異なるオプションで渡すことができます(SHORT
からMEDIUM
、LONG
、FULL
へ)。正確な結果はロケールに依存しますが、一般的には次のようになります。
SHORT
はすべて数値で、12.13.52
や3:30pm
など
MEDIUM
はそれより長い形式で、Jan 12, 1952
など
LONG
はさらに長い形式で、January 12, 1952
や3:30:32pm
など
FULL
はほぼ完全に指定する形式で、Tuesday, April 12, 1952 AD or 3:30:42pm PST
など。
必要に応じて、フォーマットにタイムゾーンを設定することもできます。フォーマットや解析をさらに制御する場合(または、ユーザーにそのような制御を与える場合)には、ファクトリ・メソッドから得たDateFormat
をSimpleDateFormat
にキャストする方法を試行することもできます。この方法はほとんどの国に有効ですが、そうでない場合に備えて、try
ブロックに入れるようにしてください。
さらに、parseとformatメソッドの形式をParsePosition
とFieldPosition
とともに使用すれば、次のことが可能です。
日付フォーマットは同期化されません。スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
修飾子と型 | クラスと説明 |
---|---|
static class |
DateFormat.Field
DateFormat.formatToCharacterIterator から返されたAttributedCharacterIterator 内の属性キー、およびFieldPosition 内のフィールド識別子として使用する定数を定義します。 |
修飾子と型 | フィールドと説明 |
---|---|
static int |
AM_PM_FIELD
AM_PMフィールドの位置合わせのための定数です。
|
protected Calendar |
calendar
日時フィールドとその時点を計算するために使用される
Calendar インスタンスです。 |
static int |
DATE_FIELD
DATEフィールドの位置合わせのための定数です。
|
static int |
DAY_OF_WEEK_FIELD
DAY_OF_WEEKフィールドの位置合わせのための定数です。
|
static int |
DAY_OF_WEEK_IN_MONTH_FIELD
DAY_OF_WEEK_IN_MONTHフィールドの位置合わせのための定数です。
|
static int |
DAY_OF_YEAR_FIELD
DAY_OF_YEARフィールドの位置合わせのための定数です。
|
static int |
DEFAULT
デフォルト・スタイル・パターンのための定数です。
|
static int |
ERA_FIELD
ERAフィールドの位置合わせのための定数です。
|
static int |
FULL
全スタイル・パターンのための定数です。
|
static int |
HOUR_OF_DAY0_FIELD
0から始まるHOUR_OF_DAYフィールドの位置合わせのための定数です。
|
static int |
HOUR_OF_DAY1_FIELD
1から始まるHOUR_OF_DAYフィールドの位置合わせのための定数です。
|
static int |
HOUR0_FIELD
0から始まるHOURフィールドの位置合わせのための定数です。
|
static int |
HOUR1_FIELD
1から始まるHOURフィールドの位置合わせのための定数です。
|
static int |
LONG
長いスタイル・パターンのための定数です。
|
static int |
MEDIUM
長さが中位のスタイル・パターンのための定数です。
|
static int |
MILLISECOND_FIELD
MILLISECONDフィールドの位置合わせのための定数です。
|
static int |
MINUTE_FIELD
MINUTEフィールドの位置合わせのための定数です。
|
static int |
MONTH_FIELD
MONTHフィールドの位置合わせのための定数です。
|
protected NumberFormat |
numberFormat
日付と時刻の数値をフォーマットするために
DateFormat が使用する数値フォーマッタです。 |
static int |
SECOND_FIELD
SECONDフィールドの位置合わせのための定数です。
|
static int |
SHORT
短いスタイル・パターンのための定数です。
|
static int |
TIMEZONE_FIELD
TIMEZONEフィールドの位置合わせのための定数です。
|
static int |
WEEK_OF_MONTH_FIELD
WEEK_OF_MONTHフィールドの位置合わせのための定数です。
|
static int |
WEEK_OF_YEAR_FIELD
WEEK_OF_YEARフィールドの位置合わせのための定数です。
|
static int |
YEAR_FIELD
YEARフィールドの位置合わせのための定数です。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
DateFormat()
新しい日付フォーマットを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
Object |
clone()
Cloneableをオーバーライドします。
|
boolean |
equals(Object obj)
equalsをオーバーライドします。
|
String |
format(Date date)
Dateを日時文字列にフォーマットします。
|
abstract StringBuffer |
format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
Dateを日時文字列にフォーマットします。
|
StringBuffer |
format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
Formatをオーバーライドします。
|
static Locale[] |
getAvailableLocales()
このクラスの
get*Instance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。 |
Calendar |
getCalendar()
この日時フォーマッタに対応するカレンダを取得します。
|
static DateFormat |
getDateInstance()
デフォルトの
FORMAT ロケールに対し、デフォルトのフォーマット・スタイルを持つ日付フォーマッタを取得します。 |
static DateFormat |
getDateInstance(int style)
デフォルトの
FORMAT ロケールに対し、指定されたフォーマット・スタイルを持つ日付フォーマッタを取得します。 |
static DateFormat |
getDateInstance(int style, Locale aLocale)
指定されたロケールに対し、指定されたフォーマット・スタイルを持つ日付フォーマッタを取得します。
|
static DateFormat |
getDateTimeInstance()
デフォルトの
FORMAT ロケールに対し、デフォルトのフォーマット・スタイルを持つ日時フォーマッタを取得します。 |
static DateFormat |
getDateTimeInstance(int dateStyle, int timeStyle)
デフォルトの
FORMAT ロケールに対し、指定された日時フォーマット・スタイルを持つ日時フォーマッタを取得します。 |
static DateFormat |
getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
指定されたロケールに対し、指定されたフォーマット・スタイルを持つ日時フォーマッタを取得します。
|
static DateFormat |
getInstance()
日付と時間の両方に対しSHORTスタイルを持つ日時フォーマッタを取得します。
|
NumberFormat |
getNumberFormat()
時間のフォーマットと解析のためにこの日時フォーマッタが使用する数値フォーマッタを取得します。
|
static DateFormat |
getTimeInstance()
デフォルトの
FORMAT ロケールに対し、デフォルトのフォーマット・スタイルを持つ時間フォーマッタを取得します。 |
static DateFormat |
getTimeInstance(int style)
デフォルトの
FORMAT ロケールに対し、指定されたフォーマット・スタイルを持つ時間フォーマッタを取得します。 |
static DateFormat |
getTimeInstance(int style, Locale aLocale)
指定されたロケールに対し、指定されたフォーマット・スタイルを持つ時刻フォーマッタを取得します。
|
TimeZone |
getTimeZone()
タイムゾーンを取得します。
|
int |
hashCode()
hashCodeをオーバーライドします。
|
boolean |
isLenient()
日時の解析を厳密に行うかどうかを判定します。
|
Date |
parse(String source)
指定された文字列の先頭からテキストを解析して日付を生成します。
|
abstract Date |
parse(String source, ParsePosition pos)
指定された解析位置に従って日時文字列を解析します。
|
Object |
parseObject(String source, ParsePosition pos)
文字列からテキストを解析して
Date を生成します。 |
void |
setCalendar(Calendar newCalendar)
この日付フォーマットで使用するカレンダを設定します。
|
void |
setLenient(boolean lenient)
日時解析を厳密に行うかどうかを設定します。
|
void |
setNumberFormat(NumberFormat newNumberFormat)
数値フォーマッタを設定します。
|
void |
setTimeZone(TimeZone zone)
この
DateFormat オブジェクトのカレンダのタイムゾーンを設定します。 |
format, formatToCharacterIterator, parseObject
protected Calendar calendar
protected NumberFormat numberFormat
DateFormat
が使用する数値フォーマッタです。サブクラスは、これを、このDateFormat
に関連付けられているロケールに適した数値フォーマットに初期化します。public static final int ERA_FIELD
public static final int YEAR_FIELD
public static final int MONTH_FIELD
public static final int DATE_FIELD
public static final int HOUR_OF_DAY1_FIELD
public static final int HOUR_OF_DAY0_FIELD
public static final int MINUTE_FIELD
public static final int SECOND_FIELD
public static final int MILLISECOND_FIELD
public static final int DAY_OF_WEEK_FIELD
public static final int DAY_OF_YEAR_FIELD
public static final int DAY_OF_WEEK_IN_MONTH_FIELD
public static final int WEEK_OF_YEAR_FIELD
public static final int WEEK_OF_MONTH_FIELD
public static final int AM_PM_FIELD
public static final int HOUR1_FIELD
public static final int HOUR0_FIELD
public static final int TIMEZONE_FIELD
public static final int FULL
public static final int LONG
public static final int MEDIUM
public static final int SHORT
public static final int DEFAULT
public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
format
、クラス: Format
obj
- NumberまたはDateにする必要がある。toAppendTo
- 返される時刻文字列のための文字列バッファ。fieldPosition
- 返された文字列内のフィールド位置を把握する。入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセット。たとえば、「1996.07.10 AD at 15:08:56 PDT」という時刻テキストが指定された場合に、指定されたfieldPositionがDateFormat.YEAR_FIELDであれば、fieldPositionの開始インデックスと終了インデックスはそれぞれ0と4に設定される。同じ時刻フィールドがパターン内で複数回現れる場合、fieldPositionはその時刻フィールドの最初のものに設定される。たとえば、パターン「h a z (zzzz)」と位置合わせフィールドのDateFormat.TIMEZONE_FIELDを使ってDateを時刻文字列「1 PM PDT (Pacific Daylight Time)」にフォーマットすると、fieldPositionの開始インデックスと終了インデックスはそれぞれ、最初に現れたタイムゾーン・パターン文字「z」に対して5と8に設定される。Format
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
date
- 日付/時間文字列にフォーマットするDate。toAppendTo
- 返される日付/時間文字列のための文字列バッファー。fieldPosition
- 返された文字列内のフィールド位置を把握する。入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセット。たとえば、「1996.07.10 AD at 15:08:56 PDT」という時刻テキストが指定された場合に、指定されたfieldPositionがDateFormat.YEAR_FIELDであれば、fieldPositionの開始インデックスと終了インデックスはそれぞれ0と4に設定される。同じ時刻フィールドがパターン内で複数回現れる場合、fieldPositionはその時刻フィールドの最初のものに設定される。たとえば、パターン「h a z (zzzz)」と位置合わせフィールドのDateFormat.TIMEZONE_FIELDを使ってDateを時刻文字列「1 PM PDT (Pacific Daylight Time)」にフォーマットすると、fieldPositionの開始インデックスと終了インデックスはそれぞれ、最初に現れたタイムゾーン・パターン文字「z」に対して5と8に設定される。public final String format(Date date)
date
- 時刻文字列にフォーマットする時刻値。public Date parse(String source) throws ParseException
日付の解析の詳細については、parse(String, ParsePosition)
メソッドを参照してください。
source
- 先頭が解析されるString
。Date
。ParseException
- 指定された文字列の先頭が解析できない場合。public abstract Date parse(String source, ParsePosition pos)
"07/10/96 4:5 PM, PDT"
が、Date(837039900000L)
と同等なDate
に解析されます。
デフォルト値では、解析は厳密ではありません。入力が、このオブジェクトのフォーマット・メソッドで使用される形式ではないが、日付として解析可能であれば、解析は正常に行われます。クライアントは、setLenient(false)
を呼び出すことによって、このフォーマットを厳密に要求できます。
この解析操作は、calendar
を使用してDate
を生成します。その結果、サブクラスの実装によっては、calendar
の日時フィールドおよびTimeZone
値が上書きされた可能性があります。さらに操作を行うには、setTimeZone
の呼出しによってすでに設定されているTimeZone
値の復元が必要になることもあります。
source
- 解析する日付/時間文字列pos
- 入力時は、解析を開始する位置。出力時は、解析が終了した位置、または解析が失敗した場合には開始位置。Date
。入力解析ができない場合はnull
public Object parseObject(String source, ParsePosition pos)
Date
を生成します。
メソッドはpos
によって指定されたインデックスを開始位置としてテキストの解析を試みます。解析が完了すると、pos
のインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字が使用されるとは限らない)のあとのインデックスに更新され、解析された日付が返されます。更新されたpos
は、このメソッドの次の呼出しの開始点を示すのに使用できます。エラーが発生した場合は、pos
のインデックスは変更されず、エラーが発生した文字のインデックスにpos
のエラー・インデックスが設定され、nullが返されます。
日付の解析の詳細については、parse(String, ParsePosition)
メソッドを参照してください。
parseObject
、クラス: Format
source
- 部分的に解析されるString
。pos
- 上記のインデックスおよびエラー・インデックス情報を持つParsePosition
オブジェクトDate
。エラーの場合はnullを返す。NullPointerException
- pos
がnullである場合。public static final DateFormat getTimeInstance()
FORMAT
ロケールに対し、デフォルトのフォーマット・スタイルを持つ時間フォーマッタを取得します。
これは、getTimeInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getTimeInstance(int style)
FORMAT
ロケールに対し、指定されたフォーマット・スタイルを持つ時間フォーマッタを取得します。
これは、getTimeInstance(style, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
style
- 指定するフォーマット・スタイル。たとえば、USロケールでのh:mm aに対するSHORT。Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getTimeInstance(int style, Locale aLocale)
style
- 指定するフォーマット・スタイル。たとえば、USロケールでのh:mm aに対するSHORT。aLocale
- 指定されたロケール。public static final DateFormat getDateInstance()
FORMAT
ロケールに対し、デフォルトのフォーマット・スタイルを持つ日付フォーマッタを取得します。
これは、getDateInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getDateInstance(int style)
FORMAT
ロケールに対し、指定されたフォーマット・スタイルを持つ日付フォーマッタを取得します。
これは、getDateInstance(style, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
style
- 指定するフォーマット・スタイル。たとえば、USロケールでのM/d/yyに対するSHORT。Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getDateInstance(int style, Locale aLocale)
style
- 指定するフォーマット・スタイル。たとえば、USロケールでのM/d/yyに対するSHORT。aLocale
- 指定されたロケール。public static final DateFormat getDateTimeInstance()
FORMAT
ロケールに対し、デフォルトのフォーマット・スタイルを持つ日時フォーマッタを取得します。
これは、getDateTimeInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
FORMAT
ロケールに対し、指定された日時フォーマット・スタイルを持つ日時フォーマッタを取得します。
これは、getDateTimeInstance(dateStyle, timeStyle, Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
dateStyle
- 指定する日付フォーマット・スタイル。たとえば、USロケールでのM/d/yyに対するSHORT。timeStyle
- 指定する時刻フォーマット・スタイル。たとえば、USロケールでのh:mm aに対するSHORT。Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
dateStyle
- 指定する日付フォーマット・スタイル。timeStyle
- 指定する時刻フォーマット・スタイル。aLocale
- 指定されたロケール。public static final DateFormat getInstance()
public static Locale[] getAvailableLocales()
get*Instance
メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。返される配列は、JavaランタイムおよびインストールされているDateFormatProvider
実装によってサポートされているロケールの和集合を表します。これには、Locale.US
と等価なLocale
インスタンスが少なくとも1つ含まれている必要があります。DateFormat
インスタンスを使用可能なロケールの配列。public void setCalendar(Calendar newCalendar)
newCalendar
- 日付フォーマットで使用する新しいCalendar
。public Calendar getCalendar()
public void setNumberFormat(NumberFormat newNumberFormat)
newNumberFormat
- 指定する新しいNumberFormat。public NumberFormat getNumberFormat()
public void setTimeZone(TimeZone zone)
DateFormat
オブジェクトのカレンダのタイムゾーンを設定します。このメソッドは次の呼び出しと等価です。
getCalendar().setTimeZone(zone)
このメソッドで設定されたTimeZone
は、setCalendar
の呼出しで上書きされます。
parseメソッドの呼出しの結果として、このメソッドで設定されたTimeZone
が上書きされる可能性があります。
zone
- 指定する新しいタイムゾーン。public TimeZone getTimeZone()
getCalendar().getTimeZone()
public void setLenient(boolean lenient)
このメソッドは次の呼び出しと等価です。
getCalendar().setLenient(lenient)
この非厳密の値は、setCalendar()
の呼出しによって上書きされます。
lenient
- true
の場合は厳密ではない解析Calendar.setLenient(boolean)
public boolean isLenient()
getCalendar().isLenient()
calendar
が非厳密である場合はtrue
、それ以外の場合はfalse
。Calendar.isLenient()
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
、クラス: Object
obj
- 比較対象の参照オブジェクト。true
、それ以外の場合はfalse
。Object.hashCode()
、HashMap
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.