HOWTO · Java
자바 날짜 대 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의 날짜를 나타냅니다. 주로 생일이나 월급날과 같은 날짜를 저장하는 데 사용됩니다. |
날짜는 불변성과 스레드 안전성을 제공하기 위해 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 클래스를 사용하여 날짜를 조작할 수 있습니다.