【Java】日付操作について(DateAndTime APIの日付操作)

Java

はじめに

今回は、javaの「日付操作」の使い方について、勉強したことを記載していきたいと思います。

 

主なクラス

DateAndTime APIで使用する主なクラスは下の表になります。

クラス名 詳細
LocalDate ローカルの日付
LocalDateTime
ローカルの日時
LocalTime
ローカルの時刻
ZonedDateTime
タイムゾーンを持つ日時

 

現在の日時の取得

nowメソッドを使用することで取得できます。

    public static void main(String[] args) throws Exception {
        // 現在日付
        LocalDate date = LocalDate.now();
        System.out.println(date); // 2024-07-20

        // 現在日時
        LocalDateTime date2 = LocalDateTime.now();
        System.out.println(date2); // 2024-07-20T15:01:47.310062700
        
        // 現在時刻
        LocalTime time = LocalTime.now();
        System.out.println(time); // 15:01:47.310062700
        
        // 現在時刻(タイムゾーン付き)
        ZonedDateTime date3 = ZonedDateTime.now();
        System.out.println(date3); // 2024-07-20T15:01:47.311060300+09:00[Asia/Tokyo]
    }

 

特定の日時を取得

ofメソッドを使用することで特定の日時を取得することができます。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        // 日付
        LocalDate date = LocalDate.of(2023,7,19);
        System.out.println(date); // 2023-07-19

        // 時刻
        LocalTime time = LocalTime.of(4,35);
        System.out.println(time); // 04:35

        // 日時
        LocalDateTime date2 = LocalDateTime.of(date, time);
        System.out.println(date2); // 2023-07-19T04:35
    }

 

年/月/日/時/分/秒を取得する

年/月/日/時/分/秒をそれぞれ取得することが可能です。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // 日時
        LocalDateTime date = LocalDateTime.now();

        // 年
        int year = date.getYear();
        System.out.println(year);

        // 月
        int month = date.getMonthValue();
        System.out.println(month);

        // 日
        int day = date.getDayOfMonth();
        System.out.println(day);

        // 時
        int hour = date.getHour();
        System.out.println(hour);

        // 分
        int minute = date.getMinute();
        System.out.println(minute);

        // 秒
        int second = date.getSecond();
        System.out.println(second);
    }

 

日付も文字列に変換する

DateTimeFormatterクラスを使用することで日付を独自のフォーマットとして文字列に変換することができます。

文字 詳細
y
M
d
H
m
s
E 曜日

 

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        // フォーマット
        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
        // 日時
        LocalDateTime date = LocalDateTime.now();

        // 2024/07/20 16:53
        System.out.println(date.format(format));
    }

 

日付比較

日付を比較するメソッドも用意されています。

メソッド 詳細
isEqual
日時が同じ場合true
isAfter
引数より後の場合true
isBefore 引数より前の場合true

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // 日時
        LocalDateTime date = LocalDateTime.now();
        LocalDateTime date2 = LocalDateTime.of(2023, 5, 11, 5, 50);

        boolean result1 = date.isEqual(date2);
        boolean result2 = date.isAfter(date2);
        boolean result3 = date.isBefore(date2);
    }

 

日付計算

メソッド 詳細
plusYears
年の加算
minusYears
年の減算
plusMonths
月の加算
minusMonths
月の減算
plusDays
日の加算
minusDays
日の減算
plusHours
時の加算
minusHours
時の減算
plusMinutes
分の加算
minusMinutes
分の減算
plusSeconds
秒の加算
minusSeconds
秒の減算

 

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // 日時
        LocalDateTime date = LocalDateTime.now();

        System.out.println(date.plusYears(1));
        System.out.println(date.minusYears(1));

        System.out.println(date.plusMonths(1));
        System.out.println(date.minusMonths(1));

        System.out.println(date.plusDays(1));
        System.out.println(date.minusDays(1));

        System.out.println(date.plusHours(1));
        System.out.println(date.minusHours(1));

        System.out.println(date.plusMinutes(1));
        System.out.println(date.minusMinutes(1));
    }

 

ドキュメント

【公式ドキュメント】
Java SE Specifications (oracle.com)

 

最後に

Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました