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
クラスを使用して操作できます。
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