SimpleDateFormat は、時刻形式の問題を解決するクラスです。
SimpleDateFormat は、ロケールに依存した方法で日付の書式設定と解析を行うための具象クラスです。書式設定 (日付 -> テキスト)、解析 (テキスト -> 日付)、および正規化が可能です。 SimpleDateFormat を使用すると、ユーザー定義の日付/時刻形式パターンを選択できます。
日付と時刻のパターン 日付と時刻の形式は、日付と時刻のパターン文字列によって指定されます。日付と時刻のパターン文字列では、引用符で囲まれていない文字「A」から「Z」および「a」から「z」はパターン文字として解釈され、日付または時刻の文字列要素を表すために使用されます。解釈を避けるために、テキストを一重引用符 (') で囲むことができます。 「''」は一重引用符を表します。他のすべての文字は解釈されず、書式設定中に出力文字列にコピーされるか、解析中に入力文字列と照合されるだけです。
次のパターン文字が定義されています (他のすべての文字「A」から「Z」および「a」から「z」は予約されています)。
文字の日付または時刻要素の表現例
G 時代識別子 テキスト AD
1996 年。
年の M 月 7 月;
w 年の週数 数値 27
W 月の週数 数値 2
D 年の日数 数値 189
d 月の日数 数値 10
F 月の第 2 週目
E 曜日 テキスト火曜日。
午前/午後マーカーテキスト PM
H その日の時間 (0 ~ 23) 数値 0
k 今日の時間 (1 ~ 24) 数字 24
K am/pm での時間数 (0 ~ 11) 数値 0
h 午前/午後の時間 (1 ~ 12) 数値 12
m 1 時間の分数 数値 30
s 分単位の秒 数値 55
S ミリ秒数 数値 978
z タイムゾーン 一般タイムゾーン 太平洋標準時 (GMT-08:00)
Z タイムゾーン RFC 822 タイムゾーン -0800
次の例は、米国ロケールで日付と時刻のパターンを解釈する方法を示しています。指定された日時は、米国太平洋タイムゾーンの現地時間 2001-07-04 12:08:56 です。
日付と時刻のパターンの結果
「yyyy.MM.dd G 'at' HH:mm:ss z」 2001.07.04 AD 12:08:56 PDT
「EEE、MMM d、''yy」 2001 年 7 月 4 日水曜日
「h:mma」 午後 12 時 8 分
「hh 'o'' Clock' a、zzzz」午後 12 時、太平洋夏時間
「K:mm a, z」午後 0 時 08 分 (太平洋夏時間)
「yyyyy.MMMMM.dd GGG hh:mm aaa」 02001. July. 04 AD 12:08 PM
「EEE、d MMM yyyy HH:mm:ss Z」 水曜日、4 7 月 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
プログラミングにおける SimpleDateFormat の実際の応用例:
(1) 書式設定(日付→文字列)
一般に、中国語でよく使用される日付と時刻は次のとおりです: 20070719 20:29:30
SimpleDateFormat フォーマッタ = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
System.out.println("日付を文字列に "+formater.format(new Date()));
同様の一般的な形式には、yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss などがあります。
ただし、この形式 (19JUL07) とそれに類似した形式にはちょっとしたトリックがあることに注意してください。
SimpleDateFormat フォーマッタ = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("Date to String "+formater.format(new Date()).toUpperCase());
英語であるため、Locale オブジェクト パラメータを使用する必要があります。それ以外の場合は、デフォルトのローカル Locale が使用されます。
(2) 分析(テキスト→日付)
一般に、希望の形式で時刻を取得するには、任意の形式の日付と時刻モードおよびテキスト パラメータを使用できます。たとえば、2007-7-19 は java.util.Date 型の時刻オブジェクトと時間を返します。 、分、秒は0で埋められます。
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
試す...{
System.out.println("現在までの文字列 "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
特に、
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
試す...{
System.out.println("現在までの文字列 "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
また、時、分、秒に 0 が埋め込まれた java.util.Date 型の日付オブジェクトも返します。
(3) テキスト -> タイムスタンプ、日付 -> タイムスタンプ
タイムスタンプ t;
SimpleDateFormat 形式 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
試す...{
t = 新しいタイムスタンプ(format.parse("2007-07-19 00:00:00").getTime());
} catch (ParseException e) ...{
e.printStackTrace();
}
タイムスタンプ t;
SimpleDateFormat 形式 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
t = 新しいタイムスタンプ(新しい日付().getTime)