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 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