HOWTO · Java
Fecha de Java frente a LocalDate
Este tutorial demuestra la diferencia entre fecha y fecha local en Java.
En esta página
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.