JavaTM 2 Platform
Std. Ed. v1.3

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 の getTimeInstancegetDateInstance、または getDateTimeInstance で日付時刻フォーマットを作成するようにしてください。これらのクラスメソッドはいずれも、デフォルトフォーマットパターンで初期化された日付時刻フォーマットを返すことができます。フォーマットパターンは、必要に応じて、applyPattern メソッドを使って修正することができます。これらのメソッドの使い方については、DateFormat を参照してください。

時刻フォーマット構文:

時刻フォーマットを指定するには、時刻パターン文字列を使用します。このパターンでは、すべての ASCII 文字がパターン文字として使用されます。この定義は次のとおりです。

 年号	意味				表示			例
 ------	-------				------------		-------
 G	紀元				(テキスト)		AD
 y	年				(数値)			1996
 M	月				(テキストと数値)	July & 07
 d	日				(数値)			10
 h	午前/午後の時 (1 〜 12)		(数値)			12
 H	一日における時 (0 〜 23)	(数値)			0
 m	分				(数値)			30
 s	秒				(数値)			55
 S	ミリ秒				(数値)			978
 E	曜日				(テキスト)		Tuesday
 D	年における日			(数値)			189
 F	月における曜日			(数値)			2 (7 月の第 2 水曜日)
 w	年における週			(数値)			27
 W	月における週			(数値)			2
 a	午前/午後			(テキスト)		PM
 k	一日における時 (1 〜 24)	(数値)			24
 K	午前/午後の時 (0 〜 11)		(数値)			0
 z	タイムゾーン			(テキスト)		Pacific Standard Time
 '	テキスト用エスケープ		(区切り文字)
 ''	単一引用符			(リテラル)		'
 
パターン文字のカウントによって、そのフォーマットが決まります。

(テキスト): 4 以上 - フル形式を使用します。< 4 - 短い形式または省略された形式があれば、それを使用します。

(数値): 最小桁数。これより短い数値は、この桁数までゼロが追加されます。年には特別な処理があります。つまり、'y' のカウントが 2 であれば、年は 2 桁に短縮されます。

(テキストと数値): 3 以上の場合はテキストを、そうでない場合は数値を使用します。

パターンの文字が ['a'..'z'] と ['A'..'Z'] の範囲になければ、その文字は引用されたテキストとして扱われます。たとえば、':'、'.'、' '、'#'、'@' などの文字は、単一引用符に囲まれていなくても、結果として生成される時刻テキストに使用されます。

無効なパターン文字がパターンに入っていると、フォーマットや解析で例外がスローされます。

US ロケールを使った例:

  フォーマットパターン                   結果
 --------------                         -------
 "yyyy.MM.dd G 'at' hh:mm:ss z"    ->>  1996.07.10 AD at 15:08:56 PDT
 "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
 "h:mm a"                          ->>  12:08 PM
 "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
 "K:mm a, z"                       ->>  0:00 PM, PST
 "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  1996.July.10 AD 12:08 PM
 
コード例:
 SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
 pdt.setStartRule(DateFields.APRIL, 1, DateFields.SUNDAY, 2*60*60*1000);
 pdt.setEndRule(DateFields.OCTOBER, -1, DateFields.SUNDAY, 2*60*60*1000);
 
// Format the current time. SimpleDateFormat formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz"); Date currentTime_1 = new Date(); String dateString = formatter.format(currentTime_1);
// Parse the previous string back into a Date. ParsePosition pos = new ParsePosition(0); Date currentTime_2 = formatter.parse(dateString, pos);
この例で、解析から得られた時刻値 currentTime_2currentTime_1 と同じになります。しかし、「午前/午後の時」パターン記号を使用しているときに、フォーマットパターンから午前/午後記号の 'a' を省略すると、それらは同じにならないことがあります。この状態は、PM の時刻をフォーマットしているときに起こります。

日付文字列を短縮年パターン ("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' 文字が 2 つ以上ある場合、年は桁数にかかわらず文字どおりに解釈されます。"MM/dd/yyyy" のパターンを用いると、"01/11/12" は A.D. 12 年 1 月 11 日に解釈されます。

名前のないタイムゾーンの場合は、文字列 GMT+hours:minutes か GMT-hours:minutes を使用します。

週の最初の日、年の最初の週、時刻をゼロベースにするかどうか (0 と 12 または 24)、およびタイムゾーンは、カレンダで定義されます。すべての数値を扱うための共通の 10 進フォーマットが 1 つあります。その数字カウントは、パターンに従って決められたとおりに処理されます。

関連項目:
Calendar, GregorianCalendar, TimeZone, DateFormat, DateFormatSymbols, DecimalFormat, 直列化された形式

クラス 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
 
コンストラクタの概要
SimpleDateFormat()
          デフォルトロケールのデフォルトパターンを使って SimpleDateFormat を構築します。
SimpleDateFormat(String pattern)
          デフォルトロケールの指定されたパターンを使って SimpleDateFormat を構築します。
SimpleDateFormat(String pattern, DateFormatSymbols formatData)
          指定されたパターンとロケール固有の記号データを使って SimpleDateFormat を構築します。
SimpleDateFormat(String pattern, Locale loc)
          指定されたパターンとロケールを使って SimpleDateFormat を構築します。
 
メソッドの概要
 void applyLocalizedPattern(String pattern)
          指定された地域対応されたパターン文字列を、この日付フォーマットに適用します。
 void applyPattern(String pattern)
          指定された地域対応されていないパターン文字列を、この日付フォーマットに適用します。
 Object clone()
          Cloneable をオーバーライドします。
 boolean equals(Object obj)
          equals をオーバーライドします。
 StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
          DateFormat をオーバーライドします。
 Date get2DigitYearStart()
          2 桁年が属すると解釈される 100 年間の開始日付を返します。
 DateFormatSymbols getDateFormatSymbols()
          日付/時刻フォーマットデータを取得します。
 int hashCode()
          hashCode をオーバーライドします。
 Date parse(String text, ParsePosition pos)
          DateFormat をオーバーライドします。
 void set2DigitYearStart(Date startDate)
          2 桁年が属すると解釈される 100 年間をユーザが指定する日付から始まるように設定します。
 void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
          日付/時刻フォーマットデータを設定します。
 String toLocalizedPattern()
          この日付フォーマットの地域対応されたパターン文字列を返します。
 String toPattern()
          この日付フォーマットを記述するパターン文字列を返します。
 
クラス 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
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SimpleDateFormat

public SimpleDateFormat()
デフォルトロケールのデフォルトパターンを使って SimpleDateFormat を構築します。注: すべてのロケールで SimpleDateFormat がサポートされるわけではない点に注意してください。完全な汎用性を持たせるためには、DateFormat クラスのファクトリメソッドを使用してください。
関連項目:
DateFormat

SimpleDateFormat

public SimpleDateFormat(String pattern)
デフォルトロケールの指定されたパターンを使って SimpleDateFormat を構築します。注: すべてのロケールで SimpleDateFormat がサポートされるわけではない点に注意してください。完全な汎用性を持たせるためには、DateFormat クラスのファクトリメソッドを使用してください。

SimpleDateFormat

public SimpleDateFormat(String pattern,
                        Locale loc)
指定されたパターンとロケールを使って SimpleDateFormat を構築します。すべてのロケールで SimpleDateFormat がサポートされるわけではない点に注意してください。注: 完全な汎用性を持たせるためには、DateFormat クラスのファクトリメソッドを使用してください。

SimpleDateFormat

public SimpleDateFormat(String pattern,
                        DateFormatSymbols formatData)
指定されたパターンとロケール固有の記号データを使って SimpleDateFormat を構築します。
メソッドの詳細

set2DigitYearStart

public void set2DigitYearStart(Date startDate)
2 桁年が属すると解釈される 100 年間をユーザが指定する日付から始まるように設定します。
パラメータ:
startDate - 解析中、2 桁年は startDatestartDate + 100 年 の範囲に配置される

get2DigitYearStart

public Date get2DigitYearStart()
2 桁年が属すると解釈される 100 年間の開始日付を返します。
戻り値:
2 桁年が解析される 100 年間の始まり

format

public StringBuffer format(Date date,
                           StringBuffer toAppendTo,
                           FieldPosition pos)
DateFormat をオーバーライドします。

日付または時刻をフォーマットします。これは、1970 年 1 月 1 日グリニッジ標準時 00:00:00 からの標準ミリ秒です。

US ロケールを使った例: "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT

オーバーライド:
クラス DateFormat 内の format
パラメータ:
date - 日付/時刻文字列にフォーマットする日付/時刻値
toAppendTo - 新しい日付/時刻テキストを追加する位置
pos - フォーマットする位置。入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセット
戻り値:
フォーマットされた日付/時刻文字列
関連項目:
DateFormat

parse

public Date parse(String text,
                  ParsePosition pos)
DateFormat をオーバーライドします。
オーバーライド:
クラス DateFormat 内の parse
関連項目:
DateFormat

toPattern

public String toPattern()
この日付フォーマットを記述するパターン文字列を返します。

toLocalizedPattern

public String toLocalizedPattern()
この日付フォーマットの地域対応されたパターン文字列を返します。

applyPattern

public void applyPattern(String pattern)
指定された地域対応されていないパターン文字列を、この日付フォーマットに適用します。

applyLocalizedPattern

public void applyLocalizedPattern(String pattern)
指定された地域対応されたパターン文字列を、この日付フォーマットに適用します。

getDateFormatSymbols

public DateFormatSymbols getDateFormatSymbols()
日付/時刻フォーマットデータを取得します。
戻り値:
この日付/時刻フォーマットに対応する日付/時刻フォーマットデータのコピー

setDateFormatSymbols

public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
日付/時刻フォーマットデータを設定します。
パラメータ:
newFormatData - 指定する日付/時刻フォーマットデータ

clone

public Object clone()
Cloneable をオーバーライドします。
オーバーライド:
クラス DateFormat 内の clone
クラス java.lang.Object からコピーされたタグ:
戻り値:
このインスタンスの複製
例外:
CloneNotSupportedException - オブジェクトのクラスが Cloneable インタフェースをサポートしていない場合。clone メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある
OutOfMemoryError - 十分なメモリがない場合
関連項目:
Cloneable

hashCode

public int hashCode()
hashCode をオーバーライドします。SimpleDateFormat オブジェクトのハッシュコードを生成します。
オーバーライド:
クラス DateFormat 内の hashCode
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
equals をオーバーライドします。
オーバーライド:
クラス DateFormat 内の equals
クラス java.lang.Object からコピーされたタグ:
パラメータ:
obj - 比較対象の参照オブジェクト
戻り値:
obj 引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Boolean.hashCode(), Hashtable

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.