クラスSimpleDateFormat
- すべての実装されたインタフェース:
Serializable,Cloneable
SimpleDateFormatは、日付のフォーマットと解析を、ロケールを考慮して行うための具象クラスです。 フォーマット(日付→テキスト)、解析(テキスト→日付)および正規化を行うことができます。
SimpleDateFormatを使うと、日付時刻フォーマットのユーザー定義パターンを選択することによって、とりあえず使用を開始することができます。 しかし、できるだけ、DateFormatのgetTimeInstance、getDateInstance、またはgetDateTimeInstanceで日付時刻フォーマッタを作成するようにしてください。 これらのクラス・メソッドはいずれも、デフォルト・フォーマット・パターンで初期化された日付時刻フォーマッタを返すことができます。 フォーマット・パターンは、必要に応じて、applyPatternメソッドを使って修正することができます。 これらのメソッドの使い方については、DateFormatを参照してください。
日時パターン
日時フォーマットは日時パターン文字列で指定されます。 日時パターン文字列内では、引用符で囲まれていない'A' - 'Z'および'a' - 'z'は、日付または時間文字列のコンポーネントを表すパターン文字として解釈されます。 テキストは単一引用符(')で囲むことで解釈を回避できます。"''"は単一引用符を表します。 ほかのすべての文字は解釈されず、フォーマット中に出力文字列へ単純にコピーされるか、解析中に入力文字列に対して一致させられます。
次のパターン文字が定義されます(ほかの'A' - 'Z'および'a' - 'z'のすべての文字は予約済み)。
パターン文字は、その数で正確な表現が決まるため、通常繰り返されます。
文字 日付または時刻のコンポーネント プレゼンテーション 例 G紀元 Text ADy年 Year 1996、96Y暦週の基準年 Year 2009;09M年における月(状況依存) Month July、Jul、07L年における月(スタンドアロン形式) Month July、Jul、07w年における週 Number 27W月における週 Number 2D年における日 Number 189d月における日 Number 10F月における曜日 Number 2E曜日の名前 Text Tuesday、Tueu曜日の番号(1 =月曜、...、7 =日曜) Number 1a午前/午後 Text PMH1日における時間(0-23) Number 0k1日における時間(1-24) Number 24K午前/午後の時(0 - 11) Number 0h午前/午後の時(1 - 12) Number 12m1時間における分 Number 30s1分における秒 Number 55SMillisecond Number 978zタイムゾーン 一般的なタイムゾーン Pacific Standard Time、PST、GMT-08:00Zタイムゾーン RFC 822タイムゾーン -0800Xタイムゾーン ISO 8601タイムゾーン -08;-0800;-08:00
- テキスト: フォーマット時に、パターン文字の数が4以上の場合はフル形式を使用します。そうでない場合、短い形式または省略された形式があれば、それを使用します。 解析には、パターン文字の数値にかかわらず、どちらの形式も受け付けられます。
- 数値: フォーマット時に、パターン文字の数は最小桁数です。これより短い数値は、この桁数までゼロ埋めされます。 解析には、2つの隣接するフィールドを区切る必要がないかぎり、パターン文字の数は無視されます。
- 年:フォーマッタの
Calendarがグレゴリオ暦の場合は、次に示すルールが適用されます。
- パターン文字の数が2の場合、フォーマットには年が2桁に短縮されます。そうでない場合は、数値として解釈されます。
- 解析には、パターン文字の数が2以上の場合、年は桁数にかかわらず文字どおりに解釈されます。 「MM/dd/yyyy」のパターンを用いると、「01/11/12」はA.D. 12年1月11日に解釈されます。
- 短縮年パターン(「y」または「yy」)で解析するときは、
SimpleDateFormatは特定の世紀に合わせて短縮年を解釈する必要があります。 この解釈は、SimpleDateFormatのインスタンスの生成前の80年以内から生成後の20年以内に日付を調整することによって行われます。 たとえば、「MM/dd/yy」のパターンと1997年1月1日に生成されたSimpleDateFormatのインスタンスを使うと、「01/11/12」という文字列は2012年1月11日と解釈され、「05/04/64」という文字列は1964年5月4日と解釈されます。 解析中は、Character.isDigit(char)で定義された2桁を含む文字列のみがデフォルトの世紀に解析されます。 1桁の文字列、3桁以上の文字列、あるいは数値以外を含む2桁の文字列(-1など)といったその他の数値文字列は、文字どおりに解釈されます。 つまり、同じパターンを用いて「01/02/3」または「01/02/003」を解析すると、A.D. 3年1月2日となります。 同様に、「01/02/-3」はB.C. 4年1月2日と解析されます。
暦週の基準年'Y'が指定され、カレンダが暦週の基準年をサポートしていない場合は、代わりにカレンダの年('y')が使用されます。getCalendar().isWeekDateSupported()を呼び出すと、暦週の基準年のサポートをテストできます。
- 月:パターン文字の数が3以上の場合、月はテキストとして解釈されます。そうでない場合は、数値として解釈されます。
- 文字Mにより、埋込み形式の名前など、状況依存の月の名前が生成されます。 文字Mは、スタンドアロン・パターン(たとえば、"MMMM")で使用する場合、月名のスタンドアロン・フォームを提供し、otherfield(s)を含むパターン(たとえば、"d MMMM")で使用する場合、月名のフォーマット・フォームを提供するという意味でコンテキスト依存です。 たとえば、カタルーニャ語の1月は書式形式の"ジェネレーション"で、スタンドアロン形式の"gener"です。 この場合、"MMMM"は"gener"を生成し、"d MMMM"の月部は"ジェネレーション"を生成します。
DateFormatSymbolsがコンストラクタSimpleDateFormat(String,DateFormatSymbols)またはメソッドsetDateFormatSymbols(DateFormatSymbols)を使用して明示的に設定されている場合、DateFormatSymbolsによって指定された月の名前が使用されます。 - 文字Lによりスタンドアロン形式の月の名前が生成されます。
- 文字Mにより、埋込み形式の名前など、状況依存の月の名前が生成されます。 文字Mは、スタンドアロン・パターン(たとえば、"MMMM")で使用する場合、月名のスタンドアロン・フォームを提供し、otherfield(s)を含むパターン(たとえば、"d MMMM")で使用する場合、月名のフォーマット・フォームを提供するという意味でコンテキスト依存です。 たとえば、カタルーニャ語の1月は書式形式の"ジェネレーション"で、スタンドアロン形式の"gener"です。 この場合、"MMMM"は"gener"を生成し、"d MMMM"の月部は"ジェネレーション"を生成します。
- 一般的なタイムゾーン:タイムゾーンに名前がある場合、テキストとして解釈されます。 GMTオフセット値を表すタイムゾーンには、次の構文が使用されます。
GMTOffsetTimeZone:時は0 - 23、分は00 - 59です。 フォーマットはロケールに依存せず、数字はUnicode標準のBasic Latinブロックの数字である必要があります。GMTSign Hours:Minutes Sign: one of+ -Hours: Digit Digit Digit Minutes: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9解析には、RFC 822タイムゾーンも受け入れられます。
- RFC 822タイムゾーン:フォーマットには、RFC 822の4桁タイムゾーン形式が使用されます。
RFC822TimeZone: Sign TwoDigitHours Minutes TwoDigitHours: Digit DigitTwoDigitHoursは00 - 23です。 ほかの定義は一般的なタイムゾーンと同様です。解析には、一般的なタイムゾーンも受け入れられます。
- ISO 8601タイムゾーン:以下のように、フォーマットと解析のフォーマットはどちらも、パターン文字の数で指定されます。
ISO8601TimeZone: OneLetterISO8601TimeZone TwoLetterISO8601TimeZone ThreeLetterISO8601TimeZone OneLetterISO8601TimeZone: Sign TwoDigitHoursほかの定義は一般的なタイムゾーンやRFC 822タイムゾーンと同様です。ZTwoLetterISO8601TimeZone: Sign TwoDigitHours MinutesZThreeLetterISO8601TimeZone: Sign TwoDigitHours:MinutesZフォーマットでは、GMTからのオフセット値が0の場合に
"Z"が生成されます。 パターン文字の数が1の場合は、1時間の端数は無視されます。 たとえば、パターンが"X"で、タイムゾーンが"GMT+05:30"の場合、"+05"が生成されます。解析では、UTCタイムゾーン指示子として
"Z"が解析されます。 一般的なタイムゾーンは受け入れられません。パターン文字数が4以上の場合、
SimpleDateFormatを構築するかパターンを適用すると、IllegalArgumentExceptionがスローされます。
SimpleDateFormatはローカライズされた日時パターン文字列もサポートします。 この文字列では、前述したパターン文字はロケール依存のほかの文字パターンに置き換えられます。 SimpleDateFormatでは、パターン文字以外のテキストのローカリゼーションが処理されません。この処理はクラスのクライアント次第で決まります。
例
次の例に、U.S. ロケールで日時パターンがどのように解釈されるかを示します。 指定された日付と時刻はU.S. Pacific Timeタイムゾーンのローカル・タイム2001年7月4日12時8分56秒です。
日時パターン Result "yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT"EEE, MMM d, ''yy"Wed, Jul 4, '01"h:mm a"12:08 PM"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time"K:mm a, z"0:08 PM, PDT"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700"yyMMddHHmmssZ"010704120856-0700"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00"YYYY-'W'ww-u"2001-W27-3
Synchronization
日付フォーマットは同期化されません。 スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。 複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
- APIのノート:
DateTimeFormatterを不変でスレッド・セーフな代替として使用することを検討してください。- 導入されたバージョン:
- 1.1
- 関連項目:
-
ネストされたクラスのサマリー
クラスjava.text.DateFormatで宣言されたネストされたクラス/インタフェース
DateFormat.Field -
フィールドのサマリー
クラスjava.text.DateFormatで宣言されたフィールド
AM_PM_FIELD, calendar, DATE_FIELD, DAY_OF_WEEK_FIELD, DAY_OF_WEEK_IN_MONTH_FIELD, DAY_OF_YEAR_FIELD, DEFAULT, ERA_FIELD, FULL, HOUR_OF_DAY0_FIELD, HOUR_OF_DAY1_FIELD, HOUR0_FIELD, HOUR1_FIELD, LONG, MEDIUM, MILLISECOND_FIELD, MINUTE_FIELD, MONTH_FIELD, numberFormat, SECOND_FIELD, SHORT, TIMEZONE_FIELD, WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD, YEAR_FIELD -
コンストラクタのサマリー
コンストラクタコンストラクタ説明デフォルトのFORMATロケールのデフォルト・パターンと日付フォーマット記号を使ってSimpleDateFormatを構築します。SimpleDateFormat(String pattern) 指定されたパターンとデフォルトのFORMATロケールのデフォルト日付フォーマット記号を使ってSimpleDateFormatを構築します。SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) 指定されたパターンと日付フォーマット記号を使ってSimpleDateFormatを構築します。SimpleDateFormat(String pattern, Locale locale) 指定されたパターンと指定されたロケールのデフォルト日付フォーマット記号を使ってSimpleDateFormatを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明voidapplyLocalizedPattern(String pattern) 指定されたローカライズされたパターン文字列を、この日付フォーマットに適用します。voidapplyPattern(String pattern) 指定されたパターン文字列を、この日付フォーマットに適用します。clone()このSimpleDateFormatのコピーを作成します。boolean指定されたオブジェクトをこのSimpleDateFormatと比較し、等しいかどうかを確認します。format(Date date, StringBuffer toAppendTo, FieldPosition pos) 指定されたDateを日付/時間文字列にフォーマットし、指定されたStringBufferに結果を追加します。Objectをフォーマットし、AttributedCharacterIteratorを生成します。2桁年が属すると解釈される100年間の開始日付を返します。この日付フォーマットの、日付と時刻のフォーマット記号のコピーを取得します。inthashCode()このSimpleDateFormatのハッシュ・コード値を返します。parse(String text, ParsePosition pos) 文字列からテキストを解析してDateを生成します。voidset2DigitYearStart(Date startDate) 2桁年が属すると解釈される100年間をユーザーが指定する日付から始まるように設定します。voidsetDateFormatSymbols(DateFormatSymbols newFormatSymbols) この日付フォーマットの、日付と時刻のフォーマット記号を設定します。この日付フォーマットのローカライズされたパターン文字列を返します。この日付フォーマットを記述するパターン文字列を返します。toString()デバッグ用に、このSimpleDateFormatを識別する文字列を返します。クラスjava.text.DateFormatで宣言されたメソッド
format, format, getAvailableLocales, getCalendar, getDateInstance, getDateInstance, getDateInstance, getDateTimeInstance, getDateTimeInstance, getDateTimeInstance, getInstance, getNumberFormat, getTimeInstance, getTimeInstance, getTimeInstance, getTimeZone, isLenient, parse, parseObject, setCalendar, setLenient, setNumberFormat, setTimeZoneクラスjava.text.Formatで宣言されたメソッド
format, parseObject
-
コンストラクタの詳細
-
SimpleDateFormat
public SimpleDateFormat()デフォルトのFORMATロケールのデフォルト・パターンと日付フォーマット記号を使ってSimpleDateFormatを構築します。 ノート: このコンストラクタはすべてのロケールをサポートするわけではありません。 すべてをカバーするには、DateFormatクラスのファクトリ・メソッドを使用してください。 -
SimpleDateFormat
public SimpleDateFormat(String pattern) 指定されたパターンとデフォルトのFORMATロケールのデフォルト日付フォーマット記号を使ってSimpleDateFormatを構築します。 ノート: このコンストラクタはすべてのロケールをサポートするわけではありません。 すべてをカバーするには、DateFormatクラスのファクトリ・メソッドを使用してください。これは、
SimpleDateFormat(pattern, Locale.getDefault(Locale.Category.FORMAT))の呼び出しと同等です。- パラメータ:
pattern- 日付と時刻のフォーマットを記述するパターン- スロー:
NullPointerException- 指定されたパターンがnullの場合IllegalArgumentException- 指定されたパターンが無効な場合- 関連項目:
-
SimpleDateFormat
指定されたパターンと指定されたロケールのデフォルト日付フォーマット記号を使ってSimpleDateFormatを構築します。 ノート: このコンストラクタはすべてのロケールをサポートするわけではありません。 すべてをカバーするには、DateFormatクラスのファクトリ・メソッドを使用してください。- パラメータ:
pattern- 日付と時刻のフォーマットを記述するパターンlocale- 日付フォーマット記号を使用するロケール- スロー:
NullPointerException- 指定されたパターンまたはロケールがnullの場合IllegalArgumentException- 指定されたパターンが無効な場合
-
SimpleDateFormat
public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) 指定されたパターンと日付フォーマット記号を使ってSimpleDateFormatを構築します。- パラメータ:
pattern- 日付と時刻のフォーマットを記述するパターンformatSymbols- フォーマットに使用する日付フォーマット記号- スロー:
NullPointerException- 指定されたパターンまたはformatSymbolsがnullの場合IllegalArgumentException- 指定されたパターンが無効な場合
-
-
メソッドの詳細
-
set2DigitYearStart
public void set2DigitYearStart(Date startDate) 2桁年が属すると解釈される100年間をユーザーが指定する日付から始まるように設定します。- パラメータ:
startDate- 解析中、2桁年はstartDate-startDate+100 yearsの範囲に配置される。- スロー:
NullPointerException-startDateがnullの場合。- 導入されたバージョン:
- 1.2
- 関連項目:
-
get2DigitYearStart
public Date get2DigitYearStart()2桁年が属すると解釈される100年間の開始日付を返します。- 戻り値:
- 2桁年が解析される100年間の始まり
- 導入されたバージョン:
- 1.2
- 関連項目:
-
format
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) 指定されたDateを日付/時間文字列にフォーマットし、指定されたStringBufferに結果を追加します。- 定義:
format、クラスDateFormat- パラメータ:
date- 日付/時間文字列にフォーマットする日付/時間値。toAppendTo- 新しい日付/時間テキストを付加する位置。pos- 返された文字列内のフィールドの位置を追跡します。 たとえば、日時テキスト"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)"に書式設定すると、タイムゾーン・パターン文字'z'の最初の出現に対して、fieldPositionの開始索引および終了索引がそれぞれ5および8に設定されます。- 戻り値:
- フォーマットされた日付/時間文字列。
- スロー:
NullPointerException- いずれかのパラメータがnullの場合。
-
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj) Objectをフォーマットし、AttributedCharacterIteratorを生成します。 返されたAttributedCharacterIteratorを使用すると、結果のStringを構築できるとともに、結果のStringについての情報を判定できます。AttributedCharacterIteratorの各属性キーは
DateFormat.Field型です。対応する属性値は属性キーと同一です。- オーバーライド:
formatToCharacterIterator、クラスFormat- パラメータ:
obj- フォーマットするオブジェクト- 戻り値:
- フォーマットされた値を説明するAttributedCharacterIterator。
- スロー:
NullPointerException- objがnullの場合。IllegalArgumentException- 指定されたオブジェクトをFormatでフォーマットできない場合、またはFormatのパターン文字列が無効な場合。- 導入されたバージョン:
- 1.4
-
parse
public Date parse(String text, ParsePosition pos) 文字列からテキストを解析してDateを生成します。メソッドは
posによって指定されたインデックスを開始位置としてテキストの解析を試みます。 解析が完了すると、posのインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字が使用されるとは限らない)のあとのインデックスに更新され、解析された日付が返されます。 更新されたposは、このメソッドの次の呼出しの開始点を示すのに使用できます。 エラーが発生した場合は、posのインデックスは変更されず、エラーが発生した文字のインデックスにposのエラー・インデックスが設定され、nullが返されます。この解析操作は、
calendarを使用してDateを生成します。calendarの日時フィールドはすべて解析前のclearedで、日時フィールドのcalendarのデフォルト値は欠落している日時情報に使用されます。 たとえば、解析操作によって年の値が取得されない場合、解析されたDateの年の値は、GregorianCalendarを使って1970となります。textに指定されたパターンやタイムゾーンによっては、TimeZoneの値が上書きされる可能性があります。setTimeZoneのコールによって以前に設定されたTimeZone値は、それ以上の操作のためにリストアする必要がある場合があります。- 定義:
parse、クラスDateFormat- パラメータ:
text- 部分的に解析されるString。pos- 上記のインデックスおよびエラー・インデックス情報を持つParsePositionオブジェクト- 戻り値:
- 文字列から解析される
Date。 エラーの場合はnullを返す。 - スロー:
NullPointerException-textまたはposがnullの場合。
-
toPattern
-
toLocalizedPattern
public String toLocalizedPattern()この日付フォーマットのローカライズされたパターン文字列を返します。- 戻り値:
- この日付フォーマットを記述するローカライズされたパターン文字列。
-
applyPattern
public void applyPattern(String pattern) 指定されたパターン文字列を、この日付フォーマットに適用します。- パラメータ:
pattern- この日付フォーマットのための新しい日付と時刻のパターン- スロー:
NullPointerException- 指定されたパターンがnullの場合IllegalArgumentException- 指定されたパターンが無効な場合
-
applyLocalizedPattern
public void applyLocalizedPattern(String pattern) 指定されたローカライズされたパターン文字列を、この日付フォーマットに適用します。- パラメータ:
pattern- このフォーマットの新しい日付と時刻のフォーマット・パターンにマップするString- スロー:
NullPointerException- 指定されたパターンがnullの場合IllegalArgumentException- 指定されたパターンが無効な場合
-
getDateFormatSymbols
public DateFormatSymbols getDateFormatSymbols()この日付フォーマットの、日付と時刻のフォーマット記号のコピーを取得します。- 戻り値:
- この日付フォーマットの、日付と時刻のフォーマット記号
- 関連項目:
-
setDateFormatSymbols
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) この日付フォーマットの、日付と時刻のフォーマット記号を設定します。- パラメータ:
newFormatSymbols- 新しい日付と時刻のフォーマット記号- スロー:
NullPointerException- 指定されたnewFormatSymbolsがnullの場合- 関連項目:
-
clone
public Object clone()このSimpleDateFormatのコピーを作成します。 また、フォーマットの日付フォーマット記号を複製します。- オーバーライド:
clone、クラスDateFormat- 戻り値:
- この
SimpleDateFormatの複製 - 関連項目:
-
hashCode
public int hashCode()このSimpleDateFormatのハッシュ・コード値を返します。- オーバーライド:
hashCode、クラスDateFormat- 実装要件:
- このメソッドは、
toPattern()から返された値を使用してハッシュ・コード値を計算します。 - 戻り値:
- この
SimpleDateFormatのハッシュ・コード値 - 関連項目:
-
toString
-
equals
public boolean equals(Object obj) 指定されたオブジェクトをこのSimpleDateFormatと比較し、等しいかどうかを確認します。 オブジェクトがSimpleDateFormatでもあり、2つの書式で値が同じ書式である場合、trueを返します。- オーバーライド:
equals、クラスDateFormat- 実装要件:
- このメソッドは、
instanceofではなく、getClass()に基づくクラス・アイデンティティの概念を使用して等価チェックを実行します。 したがって、サブクラスのequalsメソッドでは、このクラスのインスタンスはサブクラスのインスタンスと等しく比較されません。 - パラメータ:
obj- 等価性のために比較されるオブジェクト- 戻り値:
- 指定されたオブジェクトがこの
SimpleDateFormatと等しい場合はtrue - 関連項目:
-