Java-Datum vs. LocalDate

Sheeraz Gul 12 Oktober 2023
Java-Datum vs. LocalDate

Dieses Tutorial demonstriert den Unterschied zwischen Date und LocalDate in Java.

Java Date vs. LocalDate

Die Klasse Date stammt aus dem Java util-Paket, und das LocalDate wurde dem Time-Paket von Java hinzugefügt. Beide Klassen werden für das Datum in Java verwendet; Sehen wir uns den Hauptunterschied zwischen Date und LocalDate in Java an.

Date LocalDate
Das java.util.Date ist die Kern-API für ein Datum in Java ab JDK 1.0. Das java.time.LocalDate wurde in der Version 1.8 von Java eingeführt.
Das Date-Formular util-Paket zeigt auch die Zeit mit dem Datum an. Das LocalDate repräsentiert das Datum im ISO-Format yyyy-MM-dd ohne Uhrzeit. Wird hauptsächlich verwendet, um Daten wie Geburtstage und Zahltage zu speichern.
Das Datum wurde in der Version 1.8 von Java eingeführt, um Unveränderlichkeit und Thread-Sicherheit zu gewährleisten. Das LocalDate unterstützt die Unveränderlichkeit und Thread-Sicherheit nicht.

Lassen Sie uns Beispiele für Date und LocalDate in Java ausprobieren.

die Date-Klasse in Java

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);
  }
}

Der obige Code verwendet die veraltete Date-API von Java, um das aktuelle Datum und die aktuelle Uhrzeit mit Standard- und gegebenen Zeitzonen anzuzeigen. Siehe Ausgabe:

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]

die LocalDate-Klasse in Java

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);
  }
}

Der obige Code verwendet LocalDate, um das aktuelle Datum, ein bestimmtes Datum, ein Datum aus einer bestimmten Zeitzone und das Datum an einem bestimmten Tag des Jahres zu erhalten. Siehe Ausgabe:

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

Wie wir sehen können, zeigt die alte Date-API das vollständige Datum mit der aktuellen oder angegebenen Uhrzeit an und verwendet die Instanzen von Klassen, die mehr Unveränderlichkeit und Thread-Sicherheit bieten.

Andererseits zeigt das LocalDate nicht die Zeit mit dem Datum an, aber das Datum kann mit der LocalDate-Klasse aus dem time-Paket von Java manipuliert werden.

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

Verwandter Artikel - Java Date