【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クラスの構文は下記となります。
1 |
import java.time.LocalDateTime; |
まず、LocalDateTimeをインポートします。
次にクラス内でLocalDateTime型の変数を作成することで、LocalDateTimeクラスのメソッドを使用することができます。
LocalDateTimeクラスを使ったサンプルコード
現在日時を取得する場合
現在日時を取得するにはLocalDateTimeクラスのnow()メソッドを使用します。
例
1 2 3 4 5 6 7 8 9 10 |
import java.time.LocalDateTime; public class Main { public static void main(String [] args){ LocalDateTime now = LocalDateTime.now(); System.out.println(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クラスに適用できます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.time.LocalDateTime; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println("時間 = " + now.getHour()); System.out.println("分 = " + now.getMinute()); System.out.println("秒 = " + now.getSecond()); System.out.println("ミリ秒 = " + now.getNano()); System.out.println("年 = " + now.getYear()); System.out.println("月 = " + now.getMonth()); System.out.println("日 = " + now.getDayOfMonth()); } } |
出力結果
時間 = 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オブジェクトの日付を減算します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.time.LocalDateTime; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println(now); LocalDateTime smaple1 = now.plusYears(1).plusMonths(1).plusWeeks(1).plusDays(1); System.out.println(smaple1); LocalDateTime smaple2 = now.minusYears(1).minusMonths(1).minusWeeks(1).minusDays(1); System.out.println(smaple2); LocalDateTime smaple3 = now.plusHours(1).plusMinutes(1).plusSeconds(1).plusNanos(100); System.out.println(smaple3); LocalDateTime smaple4 = now.minusHours(1).minusMinutes(1).minusSeconds(1).minusNanos(100); System.out.println(smaple4); } } |
出力結果
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などの指定したフォーマットに変換して表示することができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Main { public static void main(String [] args){ LocalDateTime now = LocalDateTime.now(); System.out.println("A: "now); DateTimeFormatter form = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss" ); String formDT = now.format(form); System.out.println("B: "formDT); } } |
出力結果
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クラスについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。