java.text
クラス SimpleDateFormat
java.lang.Object
|
+--java.text.Format
|
+--java.text.DateFormat
|
+--java.text.SimpleDateFormat
- すべての実装インタフェース:
- Cloneable, Serializable
- public class SimpleDateFormat
- extends DateFormat
SimpleDateFormat
は、日付のフォーマットと解析を、ロケールを考慮して行うための具象クラスです。これによって、フォーマット (日付 -> テキスト)、解析 (テキスト -> 日付)、および正規化を行うことができます。
SimpleDateFormat
を使うと、日付時刻フォーマットのユーザ定義パターンを選択することによって、とりあえず使用を開始することができます。しかし、できるだけ、DateFormat
の getTimeInstance
、getDateInstance
、または getDateTimeInstance
で日付時刻フォーマッタを作成するようにしてください。これらのクラスメソッドはいずれも、デフォルトフォーマットパターンで初期化された日付時刻フォーマッタを返すことができます。フォーマットパターンは、必要に応じて、applyPattern
メソッドを使って修正することができます。これらのメソッドの使い方については、DateFormat
を参照してください。
日付/時刻パターン
日付/時刻フォーマットは日付/時刻パターン文字列で指定されます。日付/時刻パターン文字列内では、引用符で囲まれていない 'A'
〜 'Z'
および 'a'
〜 'z'
は、日付または時刻文字列のコンポーネントを表すパターン文字として解釈されます。テキストは単一引用符 ('
) で囲むことで解釈を回避できます。"''"
は単一引用符を表します。他のすべての文字は解釈されず、フォーマット中に出力文字列へ単純にコピーされるか、解析中に入力文字列に対して一致させられます。
次のパターン文字が定義されます。(他の 'A'
〜 'Z'
および 'a'
〜 'z'
のすべての文字は予約済み)
文字
| 日付または時刻のコンポーネント
| 表示
| 例
|
G
| 紀元
| テキスト
| AD
|
y
| 年
| 年
| 1996 ; 96
|
M
| 月
| 月
| July ; Jul ; 07
|
w
| 年における週
| 数値
| 27
|
W
| 月における週
| 数値
| 2
|
D
| 年における日
| 数値
| 189
|
d
| 月における日
| 数値
| 10
|
F
| 月における曜日
| 数値
| 2
|
E
| 曜日
| テキスト
| Tuesday ; Tue
|
a
| 午前/午後
| テキスト
| PM
|
H
| 一日における時 (0 〜 23)
| 数値
| 0
|
k
| 一日における時 (1 〜 24)
| 数値
| 24
|
K
| 午前/午後の時 (0 〜 11)
| 数値
| 0
|
h
| 午前/午後の時 (1 〜 12)
| 数値
| 12
|
m
| 分
| 数値
| 30
|
s
| 秒
| 数値
| 55
|
S
| ミリ秒
| 数値
| 978
|
z
| タイムゾーン
| 一般的なタイムゾーン
| Pacific Standard Time ; PST ; GMT-08:00
|
Z
| タイムゾーン
| RFC 822 タイムゾーン
| -0800
|
パターン文字は、その数で正確な表現が決まるため、通常繰り返されます。
- テキスト: パターン文字の数が 4 以上の場合、フォーマットにはフル形式を使用します。そうでない場合、短い形式または省略された形式があれば、それを使用します。解析には、パターン文字の数値にかかわらず、どちらの形式も受け付けられます。
- 数値: フォーマットには、パターン文字の数は最小桁数になります。これより短い数値は、この桁数までゼロが追加されます。解析には、2 つの隣接するフィールドを区切る必要がない限り、パターン文字の数は無視されます。
- 年: パターン文字の数が 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 日と解析されます。
- 月: パターン文字の数が 3 以上の場合、フォーマットには月が テキスト として解釈されます。そうでない場合は、数値 として解釈されます。
- 一般的なタイムゾーン: タイムゾーンに名前がある場合、テキスト として解釈されます。GMT オフセット値を表すタイムゾーンには、次の構文が使用されます。
GMTOffsetTimeZone:
GMT
符号 時 :
分
符号: 次のどちらか
+ -
時:
数字
数字 数字
分:
数字 数字
数字: 次のうちの 1 つ
0 1 2 3 4 5 6 7 8 9
時は 0 〜 23、分は 00 〜 59 です。フォーマットはロケールに依存せず、数字は Unicode 標準の Basic Latin ブロックの数字でなければなりません。
解析には、RFC 822 タイムゾーンも受け付けられます。
- RFC 822 タイムゾーン: フォーマットには、RFC 822 の 4 桁タイムゾーン形式が使用されます。
RFC822TimeZone:
符号 TwoDigitHours 分
TwoDigitHours:
数字 数字
TwoDigitHours は 00 〜 23 です。他の定義は一般的なタイムゾーンと同様です。
解析には、一般的なタイムゾーンも受け付けられます。
SimpleDateFormat
は地域対応された日付/時刻パターン文字列もサポートします。この文字列では、前述したパターン文字はロケール依存の他の文字パターンに置き換えられます。SimpleDateFormat
はパターン文字以外のテキストの地域対応を行いません。この地域対応は、クラスのクライアントによります。
例
次の例に、U.S. ロケールで日付/時刻パターンがどのように解釈されるかを示します。指定された日付と時刻は U.S. Pacific Time タイムゾーンのローカルタイム 2001 年 7 月 4 日 12 時 8 分 56 秒です。
日付/時刻パターン
| 結果
|
"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
|
日付フォーマットは同期化されません。スレッドごとに別のフォーマットインスタンスを作成することをお勧めします。複数のスレッドがフォーマットに同時にアクセスする場合は、外部的に同期化する必要があります。
- 関連項目:
- Java チュートリアル,
Calendar
,
TimeZone
,
DateFormat
,
DateFormatSymbols
,
直列化された形式
クラス 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 |
クラス 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 |
SimpleDateFormat
public SimpleDateFormat()
- デフォルトロケールのデフォルトパターンと日付フォーマット記号を使って
SimpleDateFormat
を構築します。注: このコンストラクタはすべてのロケールをサポートするわけではありません。すべてをカバーするには、DateFormat
クラスのファクトリメソッドを使用してください。
SimpleDateFormat
public SimpleDateFormat(String pattern)
- デフォルトロケールの指定されたパターンとデフォルトの日付フォーマット記号を使って
SimpleDateFormat
を構築します。注: このコンストラクタはすべてのロケールをサポートするわけではありません。すべてをカバーするには、{@link DateFormat{@link クラスのファクトリメソッドを使用してください。
- パラメータ:
pattern
- 日付と時刻のフォーマットを記述するパターン
- 例外:
NullPointerException
- 指定されたパターンが null の場合
IllegalArgumentException
- 指定されたパターンが正しくない場合
SimpleDateFormat
public SimpleDateFormat(String pattern,
Locale locale)
- 指定されたロケールの指定されたパターンとデフォルトの日付フォーマット記号を使って
SimpleDateFormat
を構築します。注: このコンストラクタはすべてのロケールをサポートするわけではありません。すべてをカバーするには、{@link DateFormat{@link クラスのファクトリメソッドを使用してください。
- パラメータ:
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 年
の範囲に配置される- 関連項目:
get2DigitYearStart()
get2DigitYearStart
public Date get2DigitYearStart()
- 2 桁年が属すると解釈される 100 年間の開始日付を返します。
- 戻り値:
- 2 桁年が解析される 100 年間の始まり
- 関連項目:
set2DigitYearStart(java.util.Date)
format
public StringBuffer format(Date date,
StringBuffer toAppendTo,
FieldPosition pos)
- 指定された
Date
を日付/時刻文字列にフォーマットし、指定された StringBuffer
に結果を追加します。
- 定義:
- クラス
DateFormat
内の format
- パラメータ:
date
- 日付/時刻文字列にフォーマットする日付/時刻値toAppendTo
- 新しい日付/時刻テキストを追加する位置pos
- フォーマットする位置。入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセット
- 戻り値:
- フォーマットされた日付/時刻文字列
- 例外:
NullPointerException
- 指定された日付が null の場合
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj)
- Object をフォーマットし、
AttributedCharacterIterator
を生成します。返された AttributedCharacterIterator
を使用すると、結果の String を構築できるとともに、結果の String についての情報を判定できます。
AttributedCharacterIterator の各属性キーは DateFormat.Field
型です。対応する属性値は属性キーと同一です。
- オーバーライド:
- クラス
Format
内の formatToCharacterIterator
- パラメータ:
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 が返されます。
- 定義:
- クラス
DateFormat
内の parse
- パラメータ:
pos
- 上記のインデックスおよびエラーインデックス情報を持つ ParsePosition
オブジェクトtext
- 解析する日付/時刻文字列
- 戻り値:
- 文字列から解析された
Date
。エラーの場合は null
- 例外:
NullPointerException
- text
または pos
が null の場合- 関連項目:
DateFormat.setLenient(boolean)
toPattern
public String 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(java.text.DateFormatSymbols)
setDateFormatSymbols
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
- この日付フォーマットの、日付と時刻のフォーマット記号を設定します。
- パラメータ:
newFormatSymbols
- 新しい日付と時刻のフォーマット記号
- 例外:
NullPointerException
- 指定された newFormatSymbols が null の場合- 関連項目:
getDateFormatSymbols()
clone
public Object clone()
- この
SimpleDateFormat
のコピーを作成します。また、フォーマットの日付フォーマット記号を複製します。
- オーバーライド:
- クラス
DateFormat
内の clone
- 戻り値:
- この
SimpleDateFormat
の複製
hashCode
public int hashCode()
- この
SimpleDateFormat
オブジェクトのハッシュコード値を返します。
- オーバーライド:
- クラス
DateFormat
内の hashCode
- 戻り値:
- この
SimpleDateFormat
オブジェクトのハッシュコード値 - 関連項目:
Object.equals(java.lang.Object)
,
Hashtable
equals
public boolean equals(Object obj)
- 指定されたオブジェクトとこの
SimpleDateFormat
が等しいかどうかを比較します。
- オーバーライド:
- クラス
DateFormat
内の equals
- パラメータ:
obj
- 比較対象の参照オブジェクト
- 戻り値:
- 指定されたオブジェクトが
SimpleDateFormat
と等しい場合は true - 関連項目:
Object.hashCode()
,
Hashtable
バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。 Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.