こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- Javaで日付を取得する方法を知りたい方
- 日付のフォーマットの変え方がについて知りたい方
この記事を読むと
Javaの日付の設定方法
が分かります。
javaで日付情報を取得する
javaで日付情報を取得するにはDate and Time APIを使用します
Date and Time APIはJavaSE8から導入されました。
SE8以前に提供されていたjava.util.DateクラスはAPI設計に不備があるため、
多くのメソッドが非推奨になっています。
今でもjava.util.Dateを使用しているプログラムは多いですが、
JavaSE8以降を使用している場合はDate andTime APIを使用しましょう。
Date andTime APIはjava.timeパッケージで提供されています。
java.timeパッケージのクラス
日付の設定でよく使われるクラスを紹介します
- LocalDate 日付を表す
- LocalTime 時間を表す
- LocalDateTime 日付と時刻を表す
これらのクラスは不変オブジェクトです。
コンストラクタにprivate修飾子が付与されているのでnewでインスタンスを作成することはできません。
日付情報を取得するには用意されているメソッドを使用してオブジェクトを作成します。
また、これらのクラスは使用しているOSの日付情報を取得します。
基本的にOSの設定が日本語の場合は日本語、英語の場合は英語で情報が取得されます。
メソッド一覧
- static LocalDate now();
- static LocalDate of(int year , int month, int dayOfMonth);
- static LocalTime of(int hour, int minute, int second);
- static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second);
よく使用されるのはnowメソッドとofメソッドです。
nowは現在の時刻を取得します。
ofメソッドはint型の文字列を引数で渡すことで時刻に変更します。
例えば、2019年4月1日のLocalDate型のインスタンスを作成したい場合は、
LocalDate of(2019, 4, 1);
とします。
日付のフォーマットを変更する際も事前準備としてこれらのクラスのインスタンスが必要です。
サンプルプログラム
実行結果
nowDate : 2019-04-26
nowTime : 19:41:18.392
nowDt : 2019-04-26T19:41:18.392
dateOf : 2019-04-26
timeOf : 23:12:17
ldOf : 2019-04-26T22:11:23
これらの実行結果はフォーマットはまだ指定していません。
LocalDateTime型では、日付と時刻の間に[T]という文字が入ってしまうので、
フォーマットを変更する必要があります。
日付のフォーマットを変更する
DateTimeFormatterクラスの利用
DateTimeFormatterクラスを利用してフォーマットを作成します。
フォーマットを作成する際にはofPatternメソッドを使用してDateTimeFormatterインスタンスを作成します。
予め作成しておいた日付インスタンスからformatメソッドを使用します。
formatメソッドの引数にDateTimeFormatterインスタンスを渡します。
サンプルプログラム
実行結果
2019年04月27日 午後 19:29:32