全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.text.Format | +----java.text.DateFormat | +----java.text.SimpleDateFormat
SimpleDateFormat
は、日付のフォーマットと解析をロケールを考慮して行うためのconcreteクラスです。これによって、フォーマット(ミリ -> テキスト)、解析(テキスト -> ミリ)、および正規化を行うことができます。
SimpleDateFormat
を使えば、日付時刻フォーマットのユーザ定義パターンを選択することによって、とりあえず使用を開始することができます。しかし、できるだけ、DateFormat
の getTimeInstance
か getDateInstance
か getDateTimeInstance
で日付時刻フォーマットを作成するようにしてください。これらのクラスメソッドはいずれも、デフォルトフォーマットパターンで初期化された日付時刻フォーマットを返すことができます。フォーマットパターンは、必要に応じて、applyPattern
メソッドを使って修正することができます。これらのメソッドの使用方法については、DateFormat
を参照してください。
時刻フォーマット構文:
時刻フォーマットを指定するには、time pattern文字列を使用します。このパターンでは、すべての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 曜日 (テキスト) 火曜日 D 年における日 (数値) 189 F 月における曜日 (数値) 2 (7月の第2水曜日) w 年における週 (数値) 27 W 月における週 (数値) 2 a 午前/午後 (テキスト) PM k 一日における時 (1~24) (数値) 24 K 午前/午後の時 (0~11) (数値) 0 z 時間帯 (テキスト) PDT ' テキスト用エスケープ '' 単一引用符 '
(テキスト): 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 e '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の時刻をフォーマットしているときに起こります。
名前のない時間帯の場合は、文字列 GMT+hours:minutesか GMT-hours:minutesを使用します。
週の最初の日、年の最初の週、時刻をゼロベースにするかどうか(0 対 12 または 24)、および時間帯は、カレンダで定義されます。すべての数値を扱うための共通の10進フォーマットが1つあります。その数字カウントは、パターンに従って決められたとおりに処理されます。
日付か時刻をフォーマットします。これは、24:00 GMT, Jan 1, 1970からの標準ミリ秒です。
public SimpleDateFormat()
public SimpleDateFormat(String pattern)
public SimpleDateFormat(String pattern, Locale loc)
public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
日付か時刻をフォーマットします。これは、24:00 GMT, Jan 1, 1970からの標準ミリ秒です。
USロケールを使った例: "yyyy.MM.dd e 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
public Date parse(String text, ParsePosition pos)
public String toPattern()
public String toLocalizedPattern()
public void applyPattern(String pattern)
public void applyLocalizedPattern(String pattern)
public DateFormatSymbols getDateFormatSymbols()
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
public Object clone()
public int hashCode()
public boolean equals(Object obj)
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス