Tracks
/
Java
Java
/
Temario
/
Fecha y hora
Fe

Fecha y hora en Java

6 ejercicios

Acerca de Fecha y hora

El paquete java.time, introducido en Java 8, contiene varias clases para trabajar con fechas y horas.

LocalDate

La clase java.time.LocalDate representa una fecha sin zona horaria en el sistema de calendario ISO-8601, como 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

Las fechas se pueden comparar con otras fechas:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

Una instancia de LocalDate tiene métodos de acceso para obtener sus componentes:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

Una instancia de LocalDate tiene métodos para añadirle unidades de tiempo.

Note

Estos métodos devuelven una nueva instancia de LocalDate y no actualizan la instancia existente, ya que la clase LocalDate es inmutable.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

La clase java.time.LocalDateTime representa una fecha y hora sin zona horaria en el sistema de calendario ISO-8601, como 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

Al igual que la clase LocalDate, una instancia de LocalDateTime tiene los mismos métodos para compararla con otras instancias de LocalDateTime y para añadirle unidades de tiempo.

También es posible convertir una instancia de LocalDate en una de LocalDateTime:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

Dar formato a las fechas y horas

Tanto LocalDate como LocalDateTime usan la notación estándar ISO-8601 al convertir desde y hacia un String.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

No es posible analizar un LocalDate o un LocalDateTime a partir de un String como este usando un formato diferente. En su lugar, para dar formato a las fechas con un formato personalizado, debes usar la clase java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

También puedes especificar una configuración regional al crear el formato personalizado, para dar formato y analizar en distintas regiones:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Fecha y hora