HOWTO · Java
Java Date と LocalDate
このチュートリアルでは、Java での date と localdate の違いを示します。
このページの内容
このチュートリアルでは、Java での Date と LocalDate の違いを示します。
Java Date 対 LocalDate
Date クラスは Java util パッケージからのもので、LocalDate は Java の Time パッケージに追加されました。 Java では両方のクラスが日付に使用されます。 Java における Date と LocalDate の主な違いを見てみましょう。
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 で Date と LocalDate の両方の例を試してみましょう。
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 クラスを使用して操作できます。