|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.text.Format | +--java.text.DateFormat | +--java.text.SimpleDateFormat
SimpleDateFormat
は、日付のフォーマットと解析を、ロケールを考慮して行うための具象クラスです。これによって、フォーマット (日付 -> テキスト)、解析 (テキスト -> 日付)、および正規化を行うことができます。
SimpleDateFormat
を使うと、日付時刻フォーマットのユーザ定義パターンを選択することによって、とりあえず使用を開始することができます。しかし、できるだけ、DateFormat の getTimeInstance
、getDateInstance
、または 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
この例で、解析から得られた時刻値 currentTime_2 は currentTime_1 と同じになります。しかし、「午前/午後の時」パターン記号を使用しているときに、フォーマットパターンから午前/午後記号の 'a' を省略すると、それらは同じにならないことがあります。この状態は、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);
日付文字列を短縮年パターンで解析するときは、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
, 直列化された形式コンストラクタの概要 | |
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.Format から継承したメソッド |
format,
parseObject |
クラス java.lang.Object から継承したメソッド |
finalize,
getClass,
notify,
notifyAll,
toString,
wait,
wait,
wait |
コンストラクタの詳細 |
public SimpleDateFormat()
DateFormat
public SimpleDateFormat(String pattern)
public SimpleDateFormat(String pattern, Locale loc)
public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
メソッドの詳細 |
public void set2DigitYearStart(Date startDate)
startDate
- 解析では、2 桁年は startDate
〜 startDate + 100 years
の範囲に配置されるpublic Date get2DigitYearStart()
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
日付または時刻をフォーマットします。これは、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
public Date parse(String text, ParsePosition pos)
DateFormat
public String toPattern()
public String toLocalizedPattern()
public void applyPattern(String pattern)
public void applyLocalizedPattern(String pattern)
public DateFormatSymbols getDateFormatSymbols()
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
newFormatData
- 指定する日付/時刻フォーマットデータpublic Object clone()
public int hashCode()
public boolean equals(Object obj)
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |