Fecha de Java frente a LocalDate

Sheeraz Gul 12 octubre 2023
Fecha de Java frente a LocalDate

Este tutorial demuestra la diferencia entre Date y LocalDate en Java.

Java Fecha frente a Fecha local

La clase Date es del paquete util de Java, y LocalDate se agregó al paquete Time de Java. Ambas clases se utilizan para la fecha en Java; veamos la principal diferencia entre Date y LocalDate en Java.

Date LocalDate
El java.util.Date es la API central para una fecha en Java desde JDK 1.0. El java.time.LocalDate se introdujo en la versión 1.8 de Java.
El paquete Date form util también muestra la hora con la fecha. El LocalDate representa la fecha en formato ISO yyyy-MM-dd sin hora. Se utiliza principalmente para guardar fechas como cumpleaños y días de pago.
La Fecha se introdujo en la versión 1.8 de Java para proporcionar inmutabilidad y seguridad de subprocesos. El LocalDate no es compatible con la inmutabilidad y la seguridad de subprocesos.

Probemos ejemplos para Date y LocalDate en Java.

la clase Fecha en 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);
  }
}

El código anterior utilizará la API Date heredada de Java para mostrar la fecha y la hora actuales con las zonas horarias predeterminadas y dadas. Ver salida:

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]

la clase LocalDate en 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);
  }
}

El código anterior usa LocalDate para obtener la fecha actual, la fecha específica, la fecha de una zona horaria particular y la fecha de un día particular del año. Ver salida:

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

Como podemos ver, la API heredada Date muestra la fecha completa con la hora actual o dada, y utiliza las instancias de clases que brindan más inmutabilidad y seguridad de subprocesos.

Por otro lado, el LocalDate no muestra la hora con la fecha, pero se puede manipular la fecha usando la clase LocalDate del paquete time de Java.

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

Artículo relacionado - Java Date