java.time を使いこなそう!日付と時刻の基本

docs

今回は、その新しいAPI、java.time パッケージの基本的な使い方について、具体的な例を交えながら見ていこう!これを使えば、日付や時刻の扱いはもう怖くないよ!

LocalDate – 日付だけを扱う

まずは日付だけを扱いたいときに使う LocalDate から。これは年、月、日だけを持っていて、時間やタイムゾーンの情報は持たないんだ。

今日の日付を取得する

今日の年月日が知りたいときは、now() メソッドを使うよ。

Java

import java.time.LocalDate;

public class DateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("今日の日付: " + today); // 例: 今日が2025年6月15日なら "2025-06-15"
    }
}

paizaで実行した結果

特定の日付を作成する

「2024年12月25日」みたいに、特定の日付を作りたいときは of() メソッドを使うんだ。

Java

import java.time.LocalDate;

public class SpecificDateExample {
    public static void main(String[] args) {
        LocalDate christmas2024 = LocalDate.of(2024, 12, 25);
        System.out.println("2024年のクリスマス: " + christmas2024); // 出力: 2024-12-25
    }
}

paizaで実行した結果

日付の情報を取得する

年、月、日、曜日なんかの情報を取り出したいときは、それぞれ専用のメソッドがあるよ。

Java

import java.time.LocalDate;
import java.time.DayOfWeek;

public class DateInfoExample {
    public static void main(String[] args) {
        LocalDate myBirthday = LocalDate.of(1990, 5, 15);
        System.out.println("私の誕生日: " + myBirthday);
        System.out.println("年: " + myBirthday.getYear()); // 出力: 1990
        System.out.println("月: " + myBirthday.getMonthValue()); // 出力: 5
        System.out.println("日: " + myBirthday.getDayOfMonth()); // 出力: 15
        System.out.println("曜日: " + myBirthday.getDayOfWeek()); // 出力: WEDNESDAY (水曜日)
    }
}

paizaで実行した結果

LocalTime – 時刻だけを扱う

次に、時、分、秒、ナノ秒だけを扱いたいときに使うのが LocalTime だよ。これもタイムゾーンの情報は持たないんだ。

現在の時刻を取得する

現在の時刻が知りたいときは、now() メソッドを使うよ。

Java

import java.time.LocalTime;

public class TimeExample {
    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        System.out.println("現在の時刻: " + now); // 例: 02:42:06.123456789
    }
}

paizaで実行した結果

特定の時刻を作成する

「午後3時30分」みたいに、特定の時刻を作りたいときは of() メソッドを使うんだ。

Java

import java.time.LocalTime;

public class SpecificTimeExample {
    public static void main(String[] args) {
        LocalTime meetingTime = LocalTime.of(15, 30, 0); // 時、分、秒
        System.out.println("会議の時間: " + meetingTime); // 出力: 15:30
    }
}

paizaで実行した結果

LocalDateTime – 日付と時刻を扱う

日付と時刻の両方を一緒に扱いたいときは、LocalDateTime を使うよ。これは LocalDateLocalTime の情報を組み合わせたものだね。タイムゾーンの情報は持たないよ。

現在の日付と時刻を取得する

現在の日付と時刻が知りたいときは、now() メソッドを使うよ。

Java

import java.time.LocalDateTime;

public class DateTimeExample {
    public static void main(String[] args) {
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("現在の日付と時刻: " + currentDateTime); // 例: 2025-06-15T02:42:06.123456789
    }
}

特定の日付と時刻を作成する

特定の日付と時刻を作りたいときも of() メソッドを使うんだ。

paizaで実行した結果

Java

import java.time.LocalDateTime;

public class SpecificDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime examDate = LocalDateTime.of(2025, 7, 20, 9, 0, 0); // 年、月、日、時、分、秒
        System.out.println("試験日: " + examDate); // 出力: 2025-07-20T09:00
    }
}

paizaで実行した結果

日付や時刻の計算

java.time のすごいところは、日付や時刻の計算がとっても簡単にできること!

日付の加算・減算

「3日後」とか「1ヶ月前」みたいな計算は plus()minus() メソッドを使うんだ。

Java

import java.time.LocalDate;

public class DateCalculationExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("今日: " + today);

        LocalDate threeDaysLater = today.plusDays(3);
        System.out.println("3日後: " + threeDaysLater);

        LocalDate oneMonthAgo = today.minusMonths(1);
        System.out.println("1ヶ月前: " + oneMonthAgo);
    }
}

paizaで実行した結果

時刻の加算・減算

時刻も同じように plus()minus() メソッドで計算できるよ。

Java

import java.time.LocalTime;

public class TimeCalculationExample {
    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        System.out.println("現在時刻: " + now);

        LocalTime oneHourLater = now.plusHours(1);
        System.out.println("1時間後: " + oneHourLater);

        LocalTime thirtyMinutesAgo = now.minusMinutes(30);
        System.out.println("30分前: " + thirtyMinutesAgo);
    }
}

paizaで実行した結果

日付や時刻の比較

日付や時刻が同じかどうか、どちらが新しいか古いかを比較することもできるよ。

Java

import java.time.LocalDate;

public class DateComparisonExample {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2025, 6, 15);
        LocalDate date2 = LocalDate.of(2025, 6, 20);
        LocalDate date3 = LocalDate.of(2025, 6, 15);

        System.out.println("date1 と date2 は同じ?: " + date1.isEqual(date2)); // false
        System.out.println("date1 と date3 は同じ?: " + date1.isEqual(date3)); // true

        System.out.println("date1 は date2 より前?: " + date1.isBefore(date2)); // true
        System.out.println("date1 は date2 より後?: " + date1.isAfter(date2));  // false
    }
}

paizaで実行した結果

まとめ

今回は java.time パッケージの基本的なクラスである LocalDateLocalTimeLocalDateTime の使い方と、日付・時刻の計算や比較について見てきたよ。これだけでも、これまで面倒だった日付や時刻の操作がかなり楽になったんじゃないかな?

java.time パッケージには、他にもタイムゾーンを扱う ZonedDateTime や、期間を表す Period、時間量を表す Duration など、たくさんの便利なクラスがあるんだ。これらはまた別の記事で紹介するね。

Javaで日付や時刻を扱うときは、ぜひこの java.time パッケージを積極的に使ってみてね!

前回の記事を読み返したい場合はこちらからどうぞ! ToolDocs | 様々なツールや技術情報を紹介します

コメント

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