|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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
この例で、解析から得られた時刻値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 の時刻をフォーマットしているときに起こります。
日付文字列を短縮年パターン ("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
, 直列化された形式コンストラクタの概要 | |
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 年
の範囲に配置される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
DateFormat
内の format
date
- 日付/時刻文字列にフォーマットする日付/時刻値toAppendTo
- 新しい日付/時刻テキストを追加する位置pos
- フォーマットする位置。入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセットDateFormat
public Date parse(String text, ParsePosition pos)
DateFormat
内の parse
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()
DateFormat
内の clone
java.lang.Object
からコピーされたタグ:CloneNotSupportedException
- オブジェクトのクラスが Cloneable
インタフェースをサポートしていない場合。clone
メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがあるOutOfMemoryError
- 十分なメモリがない場合Cloneable
public int hashCode()
DateFormat
内の hashCode
java.lang.Object
からコピーされたタグ:Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
DateFormat
内の equals
java.lang.Object
からコピーされたタグ:obj
- 比較対象の参照オブジェクトtrue
、そうでない場合は false
Boolean.hashCode()
,
Hashtable
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.