5 características útiles de la API de fecha y hora de Java 8
En 2014, el lanzamiento de Java 8 introdujo una nueva API de fecha y hora. Puede acceder fácilmente a esta API importando el paquete java.time .
Con la API de fecha y hora de Java 8, los desarrolladores tienen fácil acceso a fechas, horas, zonas horarias, instantes, duraciones y períodos. Estas funciones están disponibles a través de una extensa lista de clases en el paquete java.time .
En este tutorial, aprenderá cinco características útiles de la API de fecha y hora de Java 8.
1. Obtener su hora local
La API de fecha y hora de Java 8 viene con una clase llamada LocalTime . Esta clase proporciona una hora en formato de hora, minuto y segundo .
Para obtener su hora actual usando esta clase, primero tendrá que crear un nuevo objeto de la clase LocalTime . Luego, pase el objeto recuperado del método now () . El objeto recién creado almacenará la hora actual de ejecución del programa. Esto se debe a que el método now () recupera la hora actual del reloj del sistema que está en su computadora.
Uso del ejemplo de clase LocalTime
import java.time.LocalTime;
public class DateTimeAPI {
public static void main(String[] args) {
// create a new time object that stores the local time
LocalTime time = LocalTime.now();
System.out.println("The current hour is: " + time.getHour());
System.out.println("The current minute is: " + time.getMinute());
System.out.println("The current second is: " + time.getSecond());
System.out.println("The current time to the nanosecond is: " + time);
}
}
El código anterior realiza varias tareas simples utilizando diferentes métodos de LocalTime . La ejecución del código anterior produce la siguiente salida en la consola.
The current hour is: 10
The current minute is: 45
The current second is: 19
The current time to the nanosecond is: 10:45:19.324014300
2. Obtenga su fecha local
Puede obtener su fecha local a través de la API de fecha y hora de Java 8, de la misma manera que recupera su hora local. La única diferencia es que usa la clase LocalDate en lugar de la clase LocalTime .
La clase LocalDate usa la estructura año-mes-día para mostrar la fecha del sistema en su computadora, con la ayuda del método now () . La clase LocalDate proporciona acceso a más de 50 métodos diferentes, pero los que puede usar con más frecuencia son los siguientes.
- ahora () (no toma argumentos y devuelve la fecha actual)
- getYear () (no toma argumentos y devuelve el año actual)
- getMonth () (no toma argumentos y devuelve el mes actual)
- getDayOfWeek () (no toma argumentos y devuelve el día actual de la semana)
- getDayOfMonth () (no toma argumentos y devuelve el día actual del mes)
- getDayOfYear () (no toma argumentos y devuelve el día actual del año)
Uso del ejemplo de clase LocalDate
import java.time.LocalDate;
public class DateTimeAPI {
public static void main(String[] args) {
// create a new date object that stores the local date
LocalDate date = LocalDate.now();
System.out.println("The current year is: " + date.getYear());
System.out.println("The current month is: " + date.getMonth());
System.out.println("The current day of the week is: " + date.getDayOfWeek());
System.out.println("The current day of the Month is: " + date.getDayOfMonth());
System.out.println("The current day of the year is: " + date.getDayOfYear());
System.out.println("The current date is: " + date);
}
}
El código anterior produce la siguiente salida en la consola.
The current year is: 2021
The current month is: SEPTEMBER
The current day of the week is: TUESDAY
The current day of the Month is: 14
The current day of the year is: 257
The current date is: 2021-09-14
3. Verifique si el año actual es bisiesto
Entre los muchos métodos de la clase LocalDate se encuentra el método isLeapYear () . Puede utilizar este método para comprobar si un año determinado es bisiesto. Para verificar el año actual, puede crear un nuevo objeto LocalDate con el método now () y usar el método isLeapYear () en el objeto recién creado.
El uso del método isLeapYear () en un objeto LocalDate devolverá un valor booleano, que será verdadero si el año es bisiesto y falso en caso contrario.
Uso del ejemplo del método isLeapYear ()
import java.time.LocalDate;
public class DateTimeAPI {
public static void main(String[] args) {
// create an object to store the current date.
LocalDate date = LocalDate.now();
// check if the current year is a leap year.
boolean isLeap = date.isLeapYear();
// get the current year from the current date.
int year = date.getYear();
// tell the user if the current year is a leap year.
if (isLeap) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
}
}
El código anterior producirá el siguiente resultado en la consola.
2021 is not a leap year.
4. Obtenga su fecha y hora local
Hay una clase en la API de fecha y hora de Java 8 llamada LocalDateTime . Como sugiere su nombre, puede usar esta clase para obtener la fecha y la hora en su ubicación actual.
La clase tiene varios métodos importantes, pero el método now () puede ser con el que desee familiarizarse primero. El método now () de la clase LocalDateTime devuelve la fecha y hora de su ubicación actual. Utiliza la estructura año-mes-día T hora: minutos: segundos ; donde la fecha aparece primero y una t mayúscula la separa de la hora.
Uso del ejemplo de clase LocalDateTime
import java.time.LocalDateTime;
public class DateTimeAPI {
public static void main(String[] args) {
// create a new date object that stores the local date
LocalDateTime dateTime = LocalDateTime.now();
// the current time
System.out.println("The current hour is: " + dateTime.getHour());
System.out.println("The current minute is: " + dateTime.getMinute());
System.out.println("The current second is: " + dateTime.getSecond());
// the current date
System.out.println("The current year is: " + dateTime.getYear());
System.out.println("The current month is: " + dateTime.getMonth());
System.out.println("The current day of the week is: " + dateTime.getDayOfWeek());
System.out.println("The current day of the Month is: " + dateTime.getDayOfMonth());
System.out.println("The current day of the year is: " + dateTime.getDayOfYear());
// the current date and time
System.out.println("The current date and time is: " + dateTime);
}
}
El código anterior produce la siguiente salida en la consola.
The current hour is: 11
The current minute is: 9
The current second is: 30
The current year is: 2021
The current month is: SEPTEMBER
The current day of the week is: TUESDAY
The current day of the Month is: 14
The current day of the year is: 257
The current date and time is: 2021-09-14T11:09:30.009675800
Como puede ver en el resultado anterior, la clase LocalDateTime puede generar una combinación de fecha y hora, así como los valores individuales (como el mes actual), que puede obtener de las clases LocalDate y LocalTime.
5. Obtenga la fecha y hora actuales de una ubicación utilizando su zona horaria
Como ha visto hasta ahora, la API de fecha y hora de Java 8 tiene muchas características útiles. Otro útil es su capacidad para obtener la zona horaria de su ubicación actual, o la fecha y hora en una ubicación utilizando su zona horaria.
Uso del ejemplo de clase ZonedDateTime
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class DateTimeAPI {
public static void main(String[] args) {
// create a new object to store your local date, time, and time-zone.
ZonedDateTime zDateTime = ZonedDateTime.now();
// create a zoneId object to store your local time-zone
ZoneId localTimeZone = zDateTime.getZone();
// create a new zoneId object to store the zoneId provided by the user
ZoneId newZoneId = ZoneId.of("GMT-03:00");
// create an object to store the current date, time, and time-zone
// retrieved using the zoneId provide by the user
ZonedDateTime newLocation = ZonedDateTime.now(newZoneId);
System.out.println("The date, time, and time-zone at your current location is: " + zDateTime);
System.out.println("The time-zone at your current location is: " + localTimeZone);
System.out.println("The date, time, and time-zone at the new time-zone is: " + newLocation );
}
}
Están sucediendo muchas cosas en el código anterior. Al igual que las clases anteriores, la clase ZoneDateTime usa el método now () , que en este caso devuelve un objeto con la fecha, hora y zona horaria actuales.
Sin embargo, a diferencia de los ejemplos anteriores, la clase ZoneDateTime toma una zona horaria del usuario y devuelve la fecha y hora adecuadas.
El código anterior producirá el siguiente resultado en la consola.
The date, time, and time-zone at your current location is: 2021-09-14T15:00:17.029010300-05:00[GMT-05:00]
The time-zone at your current location is: GMT-05:00
The date, time, and time-zone at the new time-zone is: 2021-09-14T17:00:17.042989-03:00[GMT-03:00]
Como puede ver en el resultado anterior, la zona horaria GMT-03: 00 está dos horas por delante de la zona horaria GMT-05: 00.
Más información sobre las API
En este tutorial, ha aprendido acerca de las cinco características principales que vienen con la API de fecha y hora de Java 8. Esta lista no está completa de ninguna manera, y hay otras características de la API que puede explorar.
Sin embargo, si tiene curiosidad acerca de cómo funcionan las API en general, también existen recursos para ayudarlo con eso.