자바 날짜 대 LocalDate

Sheeraz Gul 2023년10월12일
자바 날짜 대 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의 날짜를 나타냅니다. 주로 생일이나 월급날과 같은 날짜를 저장하는 데 사용됩니다.
날짜는 불변성과 스레드 안전성을 제공하기 위해 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