자바 날짜 대 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
클래스를 사용하여 날짜를 조작할 수 있습니다.
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