1.DateTimeFormatterクラス

特別なDateTimeFormatterクラスが Date Time API に組み込まれます。その目的は、プログラマが日付と時刻を希望する正確な形式にできるだけ簡単に変換できるようにすることです。そして、Java の作成者が成功したことを喜んで報告します。

使い方はとても簡単です。DateTimeFormatterまず、クラスを作成し、日付と時刻の表示方法を指定するパターンを渡す必要があります。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

変数はどこにdtfありますかDateTimeFormatter。クラスの静的メソッドです。patternは、日付と時刻の表示に使用されるパターンを指定する文字列です。DateTimeFormatter.ofPattern()DateTimeFormatter

コード コンソール出力
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

上の例では、 メソッドを使用してパターンに基づいてオブジェクトofPattern()を作成します。DateTimeFormatter次の行では、メソッドを使用してオブジェクトを文字列にformat()変換します。LocalDateTime結果が画面に表示されます。

ほぼすべてのオブジェクトを Date Time API からメソッドに渡すことができますformat()

静的関数ofPattern()も非常に単純です。引数としてパターンを受け取り、オブジェクトを返しますDateTimeFormatter。最も興味深い部分はパターンにあります。


2. フォーマットパターン

パターンとして渡された文字列は、情報を表示する際のパターンとして使用されます。MM は月の数字、ddは月の日、yy は年の数字に置き換えられます。文字の大文字と小文字は重要です。

これらの時間パターンの完全な表は次のとおりです。

手紙 意味
y
M
d
H 時間
メートル
s
S 1000分の1秒
n ナノ秒。

覚えるのは特に難しくありません。

しかし、なぜこの例のパターンには MM、dd、yy という文字が繰り返されているのでしょうか? さて、ここからがさらに興味深いことになります。

一般的なアイデア

文字数はテキストの長さに影響します。文字数が増えると文章も長くなります。

文字 H を 1 回指定すると 9 時間は 9 と表示されますが、文字 H を 2 回続けて指定すると 9 時間は 09 と表示されます。

文字 y を 2 回続けて指定すると、年は 2 桁で記述されます。4 回連続して発生する場合は、4 桁が使用されます。

文字 M を 2 回続けて指定すると、月の番号が書き込まれます。3 回連続した場合は、月の名前 (最初の 3 文字) が使用されます。4 回連続した場合は、月の完全な名前が使用されます。

例:

コード コンソール出力
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


3. パターンの完全なテーブル

テーブル全体は非常に大きく、非常に興味深いものです。

パターン 柄のバリエーション 説明
y ええ、ええ 19; 2019年
M/L マ、MM、MMM、MMMM、MMMM 1; 01; 1月。1月; J
d d、dd 9; 09
H H、HH 2; 02 時間
メートル うーん 3; 03
s s、s 5; 05
S S、SS、SSS、... 1; 12; 123 1000分の1秒
n n 123456789 ナノ秒
G ぐ、ぐぐぐ、ぐぐぐぐ 広告; 西暦; A; 時代
Q/Q q、qq、qqq、qqqq 3; 03; Q3; 第3四半期 クォーター
w w 13 年間の週
W W 3 月の週
E ええ、ええ、ええ 月; 月曜日; M 曜日
e/c ええ、ええ、ええ、ええ、ええ 1; 01; 月; 月曜日; M 曜日
ある ある 午後 午前または午後
h h 12 12時間時計。
V VV ヨーロッパ/ヘルシンキ タイムゾーン
z ズズズズ EET; 東ヨーロッパ標準時 タイムゾーン
おおおおお GMT+2; GMT+02:00 タイムゾーン

ちなみに、これは完全版ではありません。最も完全なバージョンはここで見つけることができます。



4. 解析時間

このDateTimeFormatterクラスは、指定されたパターンに従って日付と時刻を文字列に変換するだけでなく、その逆の操作も実行できるという点でも興味深いものです。

文字列の解析は、文字列を意味のあるトークンに分割するプロセスです。

以下にその様子を示します。

コード コンソール出力
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

まず、オブジェクトを作成しDateTimeFormatter、解析に使用するパターンを設定します。

LocalDate.parse()次に、 or LocalTime.parse()orメソッドを呼び出しLocalDateTime.parse()、オブジェクトと一緒に解析する文字列を渡しますDateTimeFormatter。オブジェクトは、渡されたテキストを解析する方法と、そのためにどのようなパターンを使用する必要があるかを理解します。

別の例: 今回は時間を解析します。

コード コンソール出力
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59