Además de las expresiones de Lambda, las transmisiones y varias mejoras menores, Java 8 también introdujo un nuevo conjunto de API de tiempo y fecha en este tutorial, aprenderemos cómo usar Java 8 a través de algunos ejemplos de tareas simples. El procesamiento de fechas, calendarios y tiempo de Java siempre ha sido criticado, especialmente su decisión de definir java.util.date como modificable e implementar SimpleDateFormat como no segura por el tío. Parece que Java se ha dado cuenta de que necesita proporcionar un mejor soporte para la funcionalidad de tiempo y fecha, lo cual también es bueno para las comunidades que se utilizan para usar la biblioteca de tiempo y fecha de Joda. La mayor ventaja de esta nueva biblioteca de tiempo y fecha es que define claramente algunos conceptos relacionados con la hora y la fecha, como la hora instantánea (instantánea), la duración (duración), la fecha (fecha), la hora (hora), la zona horaria (hora de tiempo (hora de tiempo -zona) y período de tiempo (período). También se basa en algunas de las ventajas de la Biblioteca Joda, como distinguir la comprensión del tiempo y la fecha entre humanos y máquinas. Java 8 todavía usa el sistema de calendario de ISO, y a diferencia de sus predecesores, las clases en el paquete Java.Time son inmutables y seguras de hilo. La nueva API de hora y fecha se encuentra en el paquete Java.Time.
1.Instante-representa una marca de tiempo
2. Detate local: Fecha que no incluye el tiempo específico, como 2014-01-14. Se puede usar para almacenar cumpleaños, aniversario, fechas de inducción y más.
3.localtime: representa un tiempo sin fechas
4.LocalDateTime-It contiene fecha y hora, pero todavía no hay información compensada o zona horaria.
5.ZonedDatetime: esta es una fecha y hora completa que contiene la zona horaria, y el desplazamiento se basa en la hora de UTC/Greenwich.
La nueva biblioteca también agrega ZoneOffset y Zoned, lo que puede proporcionar un mejor soporte para las zonas horarias. Con el nuevo DateTimeFormatter, el análisis y el formato de las fechas también se han vuelto nuevos. Solo mencionando este artículo, escribí este artículo cuando Java estaba a punto de lanzar esta nueva función en este momento el año pasado, por lo que encontrará que el tiempo en los ejemplos aún es del año pasado. Si ejecuta estos ejemplos, los valores que devuelven definitivamente son correctos.
¿Cómo maneja Java 8 la hora y la fecha?
Alguien me preguntó cuál es la mejor manera de aprender una nueva biblioteca. Mi respuesta es que es usarlo en proyectos reales. Habrá una variedad de necesidades en un proyecto real, lo que llevará a los desarrolladores a explorar e investigar esta nueva biblioteca. En resumen, solo la tarea en sí misma realmente lo alentará a explorar y aprender. Lo mismo es cierto para la nueva API de fecha y hora de Java 8. Para aprender esta nueva biblioteca de Java 8, aquí he creado 20 ejemplos orientados a tareas. Comencemos con una tarea simple, como cómo usar la biblioteca de hora y fecha de Java 8 para representar hoy, y luego generar una fecha completa con la zona horaria y la zona horaria, y luego estudiar cómo completar algunas tareas más prácticas, como desarrollar Una solicitud de recordatorio para averiguar cuántos días hay que haber antes de ciertas fechas, como cumpleaños, aniversario del domingo, próximo día de facturación, próximo día premium o fecha de vencimiento de la tarjeta de crédito.
Ejemplo 1 Cómo obtener la fecha del día en Java 8
Hay una clase en Java 8 llamada LocalDate, que puede usarse para representar la fecha de hoy. Esta clase es ligeramente diferente de java.util.date porque solo contiene fechas y sin tiempo. Entonces, si solo necesita representar la fecha sin incluir la hora, puede usarla.
La copia del código es la siguiente:
LocalDate hoy = localDate.now ();
Producción
Fecha local de hoy: 2014-01-14
Puede ver que crea la fecha de hoy sin información de tiempo. También formatea la fecha y luego la genera.
Ejemplo 2 Cómo obtener el año en curso, mes, día en Java 8
La clase LocalDate proporciona algunos métodos convenientes para extraer atributos de año, mes, día y otros. Usando estos métodos, puede obtener cualquier atributo de fecha que necesite, sin usar clases como java.util.calendar:
La copia del código es la siguiente:
LocalDate hoy = localDate.now ();
int año = hoy.getyear ();
int mes = Today.getMonthValue ();
int day = Today.getdayOfMonth ();
System.out.printf ("Año: %d Mes: %D Día: %D /T %N", año, mes, día);
Producción
Fecha local de hoy: 2014-01-14
Año: 2014 Mes: 1 día: 14
Como puede ver, es muy simple obtener información de año y mes en Java 8. Simplemente use el método Getter correspondiente, sin memoria, y es muy intuitivo. Puede compararlo con el antiguo método de escritura para obtener el año, mes y día en curso en Java.
Ejemplo 3 Cómo obtener una fecha específica en Java 8
En el primer ejemplo, vemos que es muy simple generar la fecha del día a través del método estático ahora (), pero a través de otro método de fábrica muy útil localDate.of (), puede crear cualquier fecha, que acepte el parámetro de año, mes y día, y luego devuelve una instancia de Date Local equivalente. Hay otra buena noticia sobre este método de que no cometió ningún error en la API anterior. Lo que sea que escriba sobre la fecha aquí es, por ejemplo, en el ejemplo a continuación, representa el 14 de enero, y no hay lógica oculta.
La copia del código es la siguiente:
Localdate dateOfBirth = localdate.of (2010, 01, 14);
System.out.println ("Su fecha de nacimiento es:" + dateOfBirth);
Salida: Su fecha de nacimiento es: 2010-01-14
Se puede ver que la fecha de la creación es lo que escribimos, 14 de enero de 2014.
Ejemplo 4 Cómo verificar si dos fechas son iguales en Java 8
Si habla sobre la tarea real de la hora y la fecha de procesamiento en la realidad, una cosa común es verificar si las dos fechas son iguales. A menudo puede encontrar preguntas sobre si hoy es un día especial, como cumpleaños, aniversario o vacaciones. A veces, se le dará una fecha para verificar si es un día determinado, por ejemplo, unas vacaciones. El siguiente ejemplo lo ayudará a completar este tipo de tarea en Java 8. Como puede pensar, LocalDate anula el método igual para comparar las fechas de la siguiente manera:
La copia del código es la siguiente:
Localdate date1 = localdate.of (2014, 01, 14);
System.out.printf ("Hoy %sy date1 %s es la misma fecha %n", hoy, fecha1);
}
Producción
Hoy 2014-01-14 y fecha1 2014-01-14 son la misma fecha
En este caso, las dos fechas que comparamos son iguales. Al mismo tiempo, si obtiene una cadena de fecha formateada en el código, debe analizarla en una fecha antes de poder compararla. Puede comparar este ejemplo con la forma en que Java compara las fechas antes, y encontrará que es muy emocionante.
Ejemplo 5 Cómo verificar los eventos duplicados en Java 8, diga el cumpleaños
Hay otra tarea práctica relacionada con el tiempo y la fecha en Java, que es verificar eventos duplicados, como días de facturación mensuales, aniversario de bodas, días de reembolso mensuales o el día en que paga las primas de seguro cada año. Si trabaja en una compañía de comercio electrónico, definitivamente habrá un módulo que enviará deseos de cumpleaños a los usuarios y les enviará saludos en todas las vacaciones importantes, como Navidad, Acción de Gracias y en India, puede ser el Deepawali Festival. ¿Cómo determinar si es un festival o un evento duplicado en Java? Use la clase de mes de mes. Esta clase está compuesta de mes y día, y no contiene información de año, lo que significa que puede usarla para representar algunos días que aparecen repetidamente cada año. Por supuesto, hay algunas otras combinaciones, como la clase de Yearmonth. También es inmutable y seguro de hilo como otras clases en la nueva biblioteca de tiempo y fecha, y también es una clase de valor. Usemos un ejemplo para ver cómo usar el día mes para verificar una fecha duplicada:
La copia del código es la siguiente:
Localdate dateOfBirth = localdate.of (2010, 01, 14);
Messday Birthday = Monthay.of (dateOfBirth.getMonth (), dateOfBirth.getdayOfMonth ());
Monthday CurrentMonthday = Monthay.from (hoy);
if (currentMonthday.equals (cumpleaños)) {
System.out.println ("¡Muchos muchos retornos felices del día!");
}demás{
System.out.println ("Lo siento, hoy no es tu cumpleaños");
}
Salida: ¡Muchos muchos retornos felices del día!
Aunque los años son diferentes, hoy es el cumpleaños, por lo que verá un deseo de cumpleaños en la producción. Puede ajustar el tiempo del sistema y ejecutar el programa para ver si le recuerda cuándo es su próximo cumpleaños.
Ejemplo 6 Cómo obtener el tiempo actual en Java 8
Esto es muy similar a obtener la fecha actual en el primer ejemplo. Esta vez estamos utilizando una clase llamada LocalTime, que es un momento sin una fecha y es un cercano en relación con LocalDate. Aquí también puede usar el método de fábrica estática ahora () para obtener la hora actual. El formato predeterminado es HH: MM: SS: NNN, donde NNN es nanosegundos. Puede compararlo con cómo obtener el tiempo actual en Java 8 antes.
La copia del código es la siguiente:
LocalTime Time = localtime.now ();
Producción
Hora local ahora: 16: 33: 33.369 // en hora, minutos, segundos, nano segundos
Como puede ver, la hora actual no incluye fechas, porque Localtime solo tiene tiempo y no tiene fechas.
Ejemplo 7 Cómo aumentar el número de horas en el tiempo
Muchas veces necesitamos agregar horas, minutos o segundos para calcular el tiempo futuro. Java 8 no solo proporciona clases inmutables y seguras de hilo, sino que también proporciona algunos métodos más convenientes, como peluches () para reemplazar el método ADD () original. Por cierto, estos métodos devuelven una referencia a una nueva instancia de Localtime, porque Localtime es inmutable, no olvide almacenar esta nueva referencia.
La copia del código es la siguiente:
Localtime Time = localtime.now ();
Localtime Newtime = Time.plushours (2);
System.out.println ("Tiempo después de 2 horas:" + Newtime);
Producción:
Tiempo después de 2 horas: 18: 33: 33.369
Puede ver que la hora actual es 16: 33: 33.369 después de 2 horas. Ahora puede compararlo con la antigua forma de agregar o disminuir horas en Java. Puede saber qué método es mejor a primera vista.
Ejemplo 8 Cómo obtener una fecha después de 1 semana
Esto es similar al ejemplo anterior de obtener el tiempo después de 2 horas, aquí aprenderemos a obtener la fecha después de 1 semana. LocalDate se usa para representar fechas sin tiempo. Dado que LocalDate también es inmutable, cualquier operación de modificación devuelve una nueva instancia, así que no olvide guardarlo.
La copia del código es la siguiente:
Localdate nextweek = Today.plus (1, cronounit.weeks);
System.out.println ("Hoy es:" + hoy);
System.out.println ("Fecha después de 1 semana:" + NextWeek);
Producción:
Hoy es: 2014-01-14
Fecha después de 1 semana: 2014-01-21
Puede ver cuál será la fecha en 7 días, es decir, una semana. Puede usar este método para agregar un mes, año, hora, minuto o incluso diez años, y ver la clase de Chronounit en la API Java para obtener más opciones.
Ejemplo 9 Fecha alrededor de un año
Esta es una secuela del ejemplo anterior. En el ejemplo anterior, aprendimos cómo usar el método localDate Plus () para agregar una fecha, semana o mes a una fecha.
La copia del código es la siguiente:
Localdate previo year = Today.Minus (1, Chronounit.Years);
System.out.println ("Fecha antes de 1 año:" + Anterior Year);
Localdate nextyear = Today.plus (1, años);
System.out.println ("Fecha después de 1 año:" + Nextyear);
Producción:
Fecha antes de 1 año: 2013-01-14
Fecha después de 1 año: 2015-01-14
Se puede ver que hay dos años, uno en 2013 y el otro en 2015 y los años alrededor de 2014.
Ejemplo 10 usando el reloj en Java 8
Java 8 viene con una clase de reloj, que puede usar para obtener la hora, fecha o hora instantánea actuales en una cierta zona horaria. El reloj se puede usar en lugar de los métodos System.CurrentTimeInmillis () y TimeZone.getDefault ().
La copia del código es la siguiente:
// Devuelve la hora actual según el reloj de su sistema y establezca en UTC.
Reloj Reloj = Clock.SystemUtC ();
System.out.println ("Reloj:" + Clock);
// Devuelve el tiempo según el reloj de la zona de reloj del sistema defaultClock =
Clock.SystemDefaultzone ();
System.out.println ("Reloj:" + Clock);
Producción:
Reloj: SystemClock [Z]
Reloj: SystemClock [Z]
Puede comparar este reloj con la fecha especificada, como:
La copia del código es la siguiente:
clase pública myclass {
reloj privado;
Public Void Process (localDate eventDate) {
if (eventDate.isbefore (localDate.now (reloj)) {
...
}
}
}
Esto es bastante conveniente si necesita procesar fechas en diferentes zonas horarias.
Ejemplo 11 Cómo determinar si una fecha es antes o después de otra fecha en Java
Esta también es una tarea común en proyectos reales. ¿Cómo se sabe si una fecha es antes o después de otra fecha, o exactamente igual? En Java 8, la clase LocalDate tiene un método isbore () e isafter () que puede usarse para comparar dos fechas. Si la fecha de llamar al método es anterior a la fecha dada, el método isbore () devolverá verdadero.
La copia del código es la siguiente:
Localdate mañana = localdate.of (2014, 1, 15);
System.out.println ("Mañana llega después de hoy");
}
Localdate ayer = hoy.minus (1, días);
if (ayer.isbefore (hoy)) {
System.out.println ("ayer es día antes de hoy");
}
Producción:
Mañana llega después de hoy
Ayer es día antes de hoy
Se puede ver que la fecha en Java 8 es bastante simple. No es necesario usar otra clase como Calendar para completar tareas similares.
Ejemplo 12 Manejo de diferentes zonas horarias en Java 8
Java 8 no solo separa las fechas y los horarios, sino que también tiene una zona horaria. Ahora hay varios conjuntos de clases relacionadas con la zona horaria. Es equivalente a la clase Gregoriancalendar antes de Java 8. Usando esta clase, puede convertir la hora local en el tiempo correspondiente en otra zona horaria, como el siguiente ejemplo:
La copia del código es la siguiente:
// Fecha y hora con zona horaria en Java 8 ZoneID America = ZoneId.of ("America/New_york");
LocalDateTime LocaltDateAndtime = localDateTime.Now ();
ZonedDateTime Data yTimeinNewyork = ZonedDatetime.of (localtDateAndtime, America);
System.out.println ("Fecha y hora actuales en una zona horaria particular:" + DATEANDTIMEInNewyork);
Producción:
Fecha y hora actuales en una zona horaria en particular: 2014-01-14T16: 33: 33.373-05: 00 [America/New_york]
Puede compararlo con el método anterior de convertir la hora local en la hora GMT. Por cierto, al igual que antes de Java 8, no haga que el texto correspondiera a la zona horaria sea incorrecta, de lo contrario encontrará tal excepción:
La copia del código es la siguiente:
Excepción en el hilo "Main" java.time.zone.zonerlesSeexception: ID de zona de tiempo desconocida: Asia/Tokio
en java.time.zone.zonerulesprovider.getProvider (ZonerulesProvider.java:272)
en java.time.zone.zonerulesprovider.getRules (zonerulesprovider.java:227)
en java.time.zoneregion.ofid (zoneregion.java:120)
en java.time.zoneid.of (zoneid.java:403)
en java.time.zoneid.of (zoneid.java:351)
Ejemplo 13 Cómo representar una fecha fija, como el tiempo de vencimiento de la tarjeta de crédito
Así como el día mes representa un día recurrente, Yearmonth es otra combinación, que representa fechas como la fecha de reembolso de la tarjeta de crédito, la fecha de vencimiento de depósitos fijos, la fecha de vencimiento de las opciones. Puede usar esta clase para averiguar cuántos días hay en ese mes.
La copia del código es la siguiente:
Yearmonth Currentyearmonth = anualmonth.now ();
Yearmonth CreditCardexpiry = Yearmonth.of (2018, mes.february);
System.out.printf ("Su tarjeta de crédito expira en %s %n", CreditCardexpiry);
Producción:
Días en el año del mes 2014-01: 31
Su tarjeta de crédito expira en 2018-02
Ejemplo 14 Cómo verificar el año salto en Java 8
Esto no es complicado. Si aún desea recrear la rueda, puede ver este código.
La copia del código es la siguiente:
if (Today.EseseApyear ()) {
System.out.println ("Este año es el año salto");
}demás {
System.out.println ("2014 no es un año bisiesto");
}
Salida: 2014 no es un año bisiesto
Puede verificar por unos años más para ver si los resultados son correctos.
Ejemplo 15 ¿Cuántos días y meses se incluyen entre dos fechas?
Otra tarea común es calcular cuántos días, semanas o años se incluyen entre dos fechas dadas. Puede usar la clase java.time.period para completar esta función. En el siguiente ejemplo, calcularemos cuántos meses se separa la fecha actual de una fecha futura.
La copia del código es la siguiente:
Localdate java8release = localdate.of (2014, mes.march, 14);
Período PeriodTonextJavarelease =
Período.
System.out.println ("Meses quedan entre hoy y Java 8 lanzamiento:" + PeriodTonextJavarelease.getMonths ());
Producción:
Meses quedan entre hoy y Java 8 Lanzamiento: 2
Como puede ver, este mes es enero, y la fecha de lanzamiento de Java 8 es de marzo, por lo que hay 2 meses entre ellos.
Ejemplo 16 Fecha y hora con compensación de zona horaria
En Java 8, puede usar la clase ZoneOffset para representar una determinada zona horaria, como India es GMT o UTC5: 30, y puede usar su método de método estático. Mientras obtenga este desplazamiento, puede usar LocalDateTime y este desplazamiento para crear un OffSetDateTeMe.
La copia del código es la siguiente:
LocalDateTime DateTime = LocalDateTime.of (2014, mes. Enero, 14, 19, 30);
ZoneOffset offset = ZoneOffSet.of ("+05:30");
OffsetDateTime fecha = offsetDateTime.of (DateTime, Offset);
System.out.println ("Fecha y hora con compensación de zona horaria en Java:" + fecha);
Producción:
Fecha y hora con compensación de zona horaria en Java: 2014-01-14T19: 30+05: 30
Puede ver que la hora y la fecha actuales están relacionadas con la zona horaria. Otro punto es que OffsetDateTime es principalmente para que las máquinas lo entiendan.
Ejemplo 17 Cómo obtener la marca de tiempo actual en Java 8
Si aún recuerda cómo obtener la marca de tiempo actual antes de Java 8, ahora es un pedazo de pastel. La clase instantánea tiene un método de fábrica estática ahora () que puede devolver la marca de tiempo actual, de la siguiente manera:
La copia del código es la siguiente:
Instant timestamp = instant.now ();
System.out.println ("¿Cuál es el valor de este instante" + Timestamp);
Producción:
¿Cuál es el valor de este instante 2014-01-14T08: 33: 33.379z
Se puede ver que la marca de tiempo actual contiene fecha y hora, que es muy similar a java.util.date, de hecho, el instante es la fecha antes de Java 8. Puede usar los métodos en estas dos clases para usar estos dos tipos. Convertir entre ellos, por ejemplo, date.From (Instant) se usa para convertir instantáneamente a java.util.date, y date.toinstant () convierte la fecha en instante.
Ejemplo 18 Cómo analizar/formar fechas utilizando un formateador predefinido en Java 8
Antes de Java 8, el formato de la hora y la fecha era un trabajo técnico. Gracias a las variables locales de hilos, esto lo hace viable en un entorno múltiple, pero Java ha mantenido este estado durante mucho tiempo. Esta vez presenta un nuevo formato de hora y tiempo seguros para hilos. También viene con algunos formateros predefinidos, incluidos los formatos de fecha de uso común. Por ejemplo, en este ejemplo usamos el formato BASICISODATE predefinido, que formateará el 14 de febrero de 2014 a 20140114.
La copia del código es la siguiente:
Cadena dayafterTommorrow = "20140116";
LocalDate Formatched = localDate.Parse (DayafterTommorrow,
DateTimeFormatter.Basic_ISO_Date);
System.out.printf ("Fecha generada por la cadena %s es %s %n", dayafterTommorrow, formateado);
Producción:
Fecha generada por la cadena 20140116 es 2014-01-16
Puede ver que la fecha generada coincide con el valor de la cadena especificada, lo que significa que el formato de fecha es ligeramente diferente.
Ejemplo 19 Cómo usar un formateador personalizado para analizar las fechas en Java
En el ejemplo anterior, utilizamos el formateador de fecha de tiempo incorporado para analizar la cadena de fecha. Por supuesto, el formateador predefinido es realmente bueno, pero a veces es posible que aún necesite usar un formato de fecha personalizado. El formato de fecha en el siguiente ejemplo es "mmm dd yyyy". Puede pasar cualquier patrón al método static () de DateTimeFormatter's Of Pattern (), que devuelve una instancia, con el valor literal de este patrón es el mismo que en el ejemplo anterior. Por ejemplo, M todavía representa el mes, mientras que M sigue siendo el segmento. Un modo no válido lanzará una excepción de DataTimeParseException, pero si se trata de un error lógico, como usar M cuando es hora de usar M, no hay nada que hacer.
La copia del código es la siguiente:
Cadena Goodfriday = "18 de abril de 2014";
intentar {
DateTimeFormatter Formatter = DateTimeFormatter.OfPattern ("Mmm dd yyyy");
LocalDate Holiday = localDate.Parse (Goodfriday, Formatter);
System.out.printf ("Cadena de cadena analizada con éxito, la fecha es %s %n", Goodfriday, Holiday);
} Catch (DateTiMeParseException ex) {
System.out.printf ("%s no es Parsable!%N", Goodfriday);
Ex.PrintStackTrace ();
}
Producción:
Cadena analizada con éxito el 18 de abril de 2014, la fecha es 2014-04-18
Puede ver que el valor de la fecha coincide con la cadena pasada, pero el formato es diferente.
Ejemplo 20 Cómo formatear las fechas y convertirlas en cuerdas en Java 8
En los dos ejemplos anteriores, aunque utilizamos la clase DateTimeFormatter, analizamos principalmente la cadena de fecha. En este ejemplo, vamos a hacer lo contrario. Aquí tenemos una instancia de la clase LocalDateTime, que queremos convertir en una cadena de fecha formateada. Esta es, con mucho, la forma más fácil y conveniente de convertir las fechas en cuerdas en Java. El siguiente ejemplo devolverá una cadena formateada. Lo mismo que el ejemplo anterior es que todavía necesitamos usar la cadena de patrón especificada para crear una instancia de la clase DaTetIMatter, pero la llamada no es el método de análisis de la clase LocalDate, sino su método de formato (). Este método devolverá una cadena que representa la fecha actual, y el patrón correspondiente se define en la instancia entrante de DateTimeFormatter.
La copia del código es la siguiente:
LocalDateTime LlegleDate = localDateTime.Now ();
intentar {
DateTimeFormatter Format = DateTimeFormatter.OfPattern ("Mmm dd yyyy hh: mm a");
String Landing = ArrivalDate.Format (formato);
System.out.printf ("llegando a: %s %n", aterrizaje);
} catch (DatetimeException ex) {
System.out.printf ("%s no se puede formatear!%N", llegó);
Ex.PrintStackTrace ();
}
Salida: llegando al: 14 de enero de 2014 04:33 PM
Se puede ver que el tiempo actual está representado por el patrón "mmm dd yyyy hh: mm a", que contiene el mes representado por tres letras y el tiempo representado por AM y PM.
Varios puntos clave de la API de fecha y hora en Java 8
Después de leer estos ejemplos, creo que tiene una cierta comprensión de la nueva API de Java 8. Ahora revisemos algunos elementos clave sobre esta nueva API.
1. Proporciona javax.time.zoneid para manejar zonas horarias.
2. Proporciona clases de Date y Localtime Local
3. Todas las clases de la nueva hora y fecha en la API en Java 8 son inmutables y seguras de hilo, que es exactamente lo opuesto a la fecha y las API de calendario anteriores, donde son como java.util.date y simplifican las clases no son hilos. -seguro.
4. Un punto muy importante en la nueva API de hora y fecha es que define claramente los conceptos básicos de tiempo y fecha, como tiempo instantáneo, duración, fecha, hora, zona horaria y período de tiempo. Todos se basan en el sistema de calendario ISO.
5. Cada desarrollador de Java debe conocer al menos estas cinco clases en esta nueva API:
5.1) instantáneos representa una marca de tiempo, como 2014-01-14T02: 20: 13.592Z, que se puede obtener de la clase java.time.clock, como esta: instant-current = clock.system (ZoneID.of ("Asia / Tokio ")). Instant ();
5.2) LocalDate representa una fecha sin tiempo, como 2014-01-14. Se puede usar para almacenar cumpleaños, aniversario, fechas de inducción y más.
5.3) Localtime representa una hora sin una fecha
5.4) LocalDateTime Contiene tiempo y fecha, pero no hay compensación con la zona horaria
5.5) ZonedDatetime Este es un tiempo completo con ajuste de la zona horaria basado en el tiempo de UTC/Greenwich
1. El paquete principal de esta biblioteca es Java.Time, que contiene clases que representan fecha, hora, instante y duración. Tiene dos subpackages, uno es java.time.foramt, lo cual es obvio para qué se usa esto, y el otro es java.time.temporal, que puede acceder a varios campos desde un nivel inferior.
2. La zona horaria se refiere a la región en la tierra que comparte el mismo tiempo estándar. Cada zona horaria tiene un identificador único, y también hay un formato de región/ciudad (Asia/Tokio) y un tiempo de compensación que comienza desde el tiempo de Greenwich. Por ejemplo, el tiempo de compensación en Tokio es +09: 00.
3.OffSetDateTime Class en realidad contiene localDateTime y ZoneOffset. Se utiliza para representar una fecha completa (año, mes, día) y tiempo (hora, minuto, nanosegundo) que contiene el desplazamiento de tiempo de Greenwich (+/- hora: minuto, por ejemplo +06: 00 o -08: 00).
4. La clase DateTimeFormatter se usa para formatear y analizar fechas en Java. A diferencia de SimpleDateFormat, es inmutable y seguro de hilo, y puede asignarse a una variable estática si es necesario. La clase DateTimeFormatter proporciona muchos formateros predefinidos, y también puede personalizar el formato que desee. Por supuesto, según la Convención, también tiene un método de parse () utilizado para convertir una cadena a una fecha, y si hay algún error durante la conversión, lanzará una excepción de DataTimeParseException. Del mismo modo, la clase DateFormather también tiene un método de formato () para formatear fechas.
5. En otras palabras, los dos formatos de fecha de "Mmm d yyyy" y "mmm dd yyyy" también son ligeramente diferentes. El que viene en "2 de enero de 2014" informará un error porque espera que vengan dos personajes del mes. Para resolver este problema, si el día es un solo dígito, debe inventar 0 al frente, por ejemplo, "2 de enero de 2014" debe cambiarse a "enero 02 de 2014".
Eso se trata de Java 8, la nueva API de hora y fecha. Estos ejemplos cortos son suficientes para comprender algunas de las nuevas clases en esta nueva API. Dado que se explica en base a tareas reales, cuando se encuentra con el trabajo en Java que necesita procesar la hora y la fecha, ya no tiene que buscar. Aprendimos a crear y modificar instancias de fecha. También aprendimos sobre las diferencias entre las fechas puras, la fecha más la hora, la fecha más las zonas horarias, saber cómo comparar dos fechas y cómo encontrar un día determinado para una fecha especificada, como el próximo cumpleaños, aniversario o fecha de seguro. También aprendimos a analizar y formar fechas en Java 8 de manera segura de hilo sin usar variables locales de hilo o bibliotecas de terceros. La nueva API es competente para cualquier hora y fecha en tareas relacionadas con la fecha.