Java プラットフォーム 1.2

java.text
クラス SimpleDateFormat

java.lang.Object
  |
  +--java.text.Format
        |
        +--java.text.DateFormat
              |
              +--java.text.SimpleDateFormat

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_2 は currentTime_1 と同じになります。しかし、「午前/午後の時」パターン記号を使用しているときに、フォーマットパターンから午前/午後記号の 'a' を省略すると、それらは同じにならないことがあります。この状態は、PM の時刻をフォーマットしているときに起こります。

日付文字列を短縮年パターンで解析するときは、SimpleDateFormat は特定の世紀に合わせて短縮年を解釈する必要があります。この解釈は、SimpleDateFormat のインスタンスの生成前の 80 年以内から生成後の 20 年以内に日付を調整することによって行われます。たとえば、MM/dd/yy のパターンと 1997 年 1 月 1 日に生成された SimpleDateFormat のインスタンスを使うと、"01/11/12" という文字列は 2012 年 1 月 11 日と解釈され、"05/04/64" という文字列は 1964 年 5 月 4 日と解釈されます。

名前のないタイムゾーンの場合は、文字列 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 years の範囲に配置される

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

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

hashCode

public int hashCode()
hashCode をオーバーライドします。 SimpleDateFormat オブジェクトのハッシュコードを生成します。
オーバーライド:
クラス DateFormat 内の hashCode

equals

public boolean equals(Object obj)
equals をオーバーライドします。
オーバーライド:
クラス DateFormat 内の equals

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.