【Java】LocalDateTimeクラスを使って日時データを扱う!

日時データを扱うにはLocalDateTimeクラスを使用します。

LocalDateTimeクラスとは「日付」と「時刻」の両方を扱うクラスであり、LocalDateTimeクラスを使用することで日付と時刻のデータを操作することができます。

例えば「2020-03-10 21:30:45.123456789」を格納した場合に月日のみを取得できたり、時刻のみを取得することができたりします。
また、取得した日付データからプラスやマイナスなどの演算を行うことも可能です。

さらに、DateTimeFormatterクラスを組み合わせて使用することで日付情報をyyyy/mm/ddなどの指定したフォーマットに変換して表示することができます。

今回はLocalDateTimeクラスを使って以下の場合で日時データを扱っていきます。

⚫︎ 現在日時を取得する場合
⚫︎ 取得した日付の情報を単位別に取得する場合
⚫︎ 取得した日付を計算する場合

LocalDateTimeクラスとは

LocalDateTimeクラスは、日付/時間(年-月-日-時-分-秒)を表す日付/時間のクラスとなります。
デフォルトの形式はyyyy-MM-dd-HH-mm-ss.zzzです。

LocalDateTimeクラスの書き方

LocalDateTimeクラスの構文は下記となります。

まず、LocalDateTimeをインポートします。

次にクラス内でLocalDateTime型の変数を作成することで、LocalDateTimeクラスのメソッドを使用することができます。

LocalDateTimeクラスを使ったサンプルコード

現在日時を取得する場合

現在日時を取得するにはLocalDateTimeクラスのnow()メソッドを使用します。

出力結果

2020-06-19T03:38:20.609017

日付の情報を単位別に取得する

日付の情報を単位別に取得するにはget()メソッドを使用します。
get()メソッドは、年から秒までを単位別に取得することができます。

getHour():LocalDateTimeオブジェクトに含まれるint時間を0〜23で返します。
getMinute():int分の情報を0〜59で返します。
getSecond():LocalDateTimeオブジェクト内に含まれる秒の整数を0〜59で返します。
getNano():LocalDateTimeオブジェクトから0〜999,999,999の範囲のintナノ秒を返します。

getYear()、getMonth()、getDayOfMonth()、getDayOfWeek()、getDayOfYear()などのメソッドもLocalDateTimeクラスに適用できます。

出力結果

時間 = 4
分 = 11
秒 = 14
ミリ秒 = 205421000
年 = 2020
月 = JUNE
日 = 19

now()メソッドで取得した値からget()メソッドを使うことで
年、月、日、時間、分、秒、ミリ秒を別々に取得することができました。

取得した日付を演算する場合

取得した日付を演算するにはplusXXX()メソッドとminusXXX()メソッドを使用します。

plusHours()、plusMinutes()、plusSeconds()、plusNanos()
→ LocalDateTimeオブジェクトに時間を追加します。
LocalHouse()、minusMinutes()、minusSeconds()、minusNanos()
→ LocalDateTimeオブジェクトの時間を減算します。
plusYears()、plusMonths()、plusWeeks()およびplusDays()
→ LocalDateTimeオブジェクトに日付を追加します。
minusYears()、minusMonths()、minusWeeks()、minusDays()
→ LocalDateTimeオブジェクトの日付を減算します。

出力結果

2020-06-19T04:25:56.470349
2021-07-27T04:25:56.470349
2019-05-11T04:25:56.470349
2020-06-19T05:26:57.470349100
2020-06-19T03:24:55.470348900

now()メソッドで取得した値から、plus()、minus()メソッドを使うことで
プラス、マイナスされた値を取得することができました。

分かりやすい日付へ変更する場合

分かりやすい日付へ変更する場合にはDateTimeFormatterクラスを使用します。
DateTimeFormatterクラスとはLocalDateTimeクラスなどを、指定した日付パターンに変換するためのクラスとなリます。

DateTimeFormatterクラスを使用することで日付情報をyyyy/mm/ddなどの指定したフォーマットに変換して表示することができます。

出力結果

A: 2020-06-19T03:52:38.359857
B: 2020-06-19-06 03:52:38

AがLocalDateTimeのnow()メソッドから取得した日付で
BはofPattern()メソッドでフォーマットを変更して表示された日付になります。
どちらの表示形式が見やすいかというとBの方が分かりやすいと思います。

今日のポイント

LocalDateTimeクラスを使って日時データを操作する

⚫︎ LocalDateTimeクラスは、日付/時間(年-月-日-時-分-秒)を表す日付/時間のクラスである

⚫︎ 現在日時を取得するにはLocalDateTimeクラスのnow()メソッドを使用する

⚫︎ 日付の情報を単位別に取得するにはget()メソッドを使用する

⚫︎ 取得した日付を演算するにはplusXXX()メソッドとminusXXX()メソッドを使用する

⚫︎ 分かりやすい日付へ変更する場合にはDateTimeFormatterクラスを使用する

関連記事

Dateクラスについてはこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し