Java Date と LocalDate

Sheeraz Gul 2023年10月12日
Java Date と LocalDate

このチュートリアルでは、Java での DateLocalDate の違いを示します。

Java DateLocalDate

Date クラスは Java util パッケージからのもので、LocalDate は Java の Time パッケージに追加されました。 Java では両方のクラスが日付に使用されます。 Java における DateLocalDate の主な違いを見てみましょう。

Date LocalDate
java.util.Date は、JDK 1.0 からの Java の日付のコア API です。 java.time.LocalDate は Java の 1.8 バージョンで導入されました。
Date 形式の util パッケージも、日付とともに時刻を表示します。 LocalDate は、日付を ISO 形式 yyyy-MM-dd で表します。時間は含まれません。 主に誕生日や給料日などの日付を保存するために使用されます。
Date は、不変性とスレッド セーフを提供するために Java の 1.8 バージョンで導入されました。 LocalDate は、不変性とスレッド セーフをサポートしていません。

Java で DateLocalDate の両方の例を試してみましょう。

Java の Date クラス

package delftstack;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Example {
  public static void main(String[] args) {
    // Create an Instant date and convert it to local date time.
    Instant Date_Instant = new Date().toInstant();
    LocalDateTime Demo_Date =
        LocalDateTime.ofInstant(Date_Instant, ZoneId.of(ZoneId.SHORT_IDS.get("PST")));
    System.out.println("The Current Date is:  " + Demo_Date);

    // Create an Instant calendar
    Instant Calendar_Instant = Calendar.getInstance().toInstant();
    System.out.println(Calendar_Instant);
    // Instance of zoneid to timezone
    ZoneId Default_TimeZone = TimeZone.getDefault().toZoneId();
    System.out.println(Default_TimeZone);

    // from specific Calendar
    ZonedDateTime Gregorian_Calendar_DateTime = new GregorianCalendar().toZonedDateTime();
    System.out.println(Gregorian_Calendar_DateTime);

    // Date API Legacy classes
    Date Date_Demo = Date.from(Instant.now());
    System.out.println(Date_Demo);

    TimeZone Time_Zone = TimeZone.getTimeZone(Default_TimeZone);
    System.out.println(Time_Zone);

    GregorianCalendar gc = GregorianCalendar.from(Gregorian_Calendar_DateTime);
    System.out.println(gc);
  }
}

上記のコードは、Java の従来の Date API を使用して、現在の日付と時刻をデフォルトおよび指定されたタイムゾーンで表示します。 出力を参照してください:

The Current Date is:  2022-09-13T00:40:09.373
2022-09-13T07:40:09.490Z
Asia/Karachi
2022-09-13T12:40:09.545+05:00[Asia/Karachi]
Tue Sep 13 12:40:09 PKT 2022
sun.util.calendar.ZoneInfo[id="Asia/Karachi",offset=18000000,dstSavings=0,useDaylight=false,transitions=12,lastRule=null]
java.util.GregorianCalendar[time=1663054809545,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Karachi",offset=18000000,dstSavings=0,useDaylight=false,transitions=12,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2022,MONTH=8,WEEK_OF_YEAR=37,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=256,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=40,SECOND=9,MILLISECOND=545,ZONE_OFFSET=18000000,DST_OFFSET=0]

Java の LocalDate クラス

package delftstack;

import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;

public class Example {
  public static void main(String[] args) {
    // The Current Date
    LocalDate Current_LocalDate = LocalDate.now();
    System.out.println("The Current Date is: " + Current_LocalDate);

    // The specific date Creation using LocalDate by providing input arguments
    LocalDate FirstLocalDate_2022 = LocalDate.of(2022, Month.JANUARY, 1);
    System.out.println("The Specific Date with inputs: " + FirstLocalDate_2022);

    // Trying to create a date by using Local date with invalid input
    LocalDate LocalDate_Karachi = LocalDate.now(ZoneId.of("Asia/Karachi"));
    System.out.println("The Current Date in Karachi is: " + LocalDate_Karachi);

    // Trying to Get the date from the base date (1970-10-28)
    LocalDate LocalDate_FromBase = LocalDate.ofEpochDay(300);
    System.out.println("300th day from base date: " + LocalDate_FromBase);

    LocalDate HundredDay_2022 = LocalDate.ofYearDay(2022, 100);
    System.out.println("100th day of 2022: " + HundredDay_2022);
  }
}

上記のコードは LocalDate を使用して、現在の日付、特定の日付、特定のタイムゾーンの日付、および特定の年の日付を取得します。 出力を参照してください:

The Current Date is: 2022-09-13
The Specific Date with inputs: 2022-01-01
The Current Date in Karachi is: 2022-09-13
300th day from base date: 1970-10-28
100th day of 2022: 2022-04-10

ご覧のとおり、従来の Date API は、現在または指定された時間で完全な日付を表示し、より不変性とスレッド セーフを提供するクラスのインスタンスを使用します。

一方、LocalDate は日付で時刻を表示しませんが、日付は Java の time パッケージの LocalDate クラスを使用して操作できます。

著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Date