Skip to content

Horas

Introducción

En esta API, las horas se pueden manejar de forma independiente a la fecha, con la clase LocalTime. Tiene un funcionamiento bastante similar a la clase LocalDate.

Una de las utilidades de esta clase es la capacidad de representar el tiempo de un día, como por ejemplo, la hora de inicio de una película, la hora de apertura de una biblioteca, etc. Hacen referencia a un día cualquiera, sin indicar una fecha concreta.

public class LocalTimeExample {
    public void show(){
        LocalTime time = LocalTime.now();
        System.out.println(time);

        time = time.plusHours(10);
        System.out.println(time);

        time = time.minusMinutes(20);
        System.out.println(time);
    }

    public static void main(String[] args) {
        new LocalTimeExample().show();
    }
}

LocalDateTime

Por el contrario, si se desea manejar el tiempo de una fecha concreta, la API nos proporciona la clase LocalDateTime, que representa la fecha y la hora y es una combinación de LocalDate y LocalTime.

Tiene métodos muy parecidos de las dos clases que combina y además tiene métodos estáticos para construir una instancia de la clase:

  • of(int year, int month, int day, int hour, int minute, int second). Crea una instancia de la clase con los datos proporcionados. Además tiene una sobrecarga donde no recibe los segundos, otra sobrecarga donde también recibe los nano segundos, además de las sobrecargas donde recibe un valor del enum Month.
  • of(LocalDate date, LocalTime time). Crea una instancia de la clase combinando el date y el time indicados.
  • now(). Crea una instancia de la clase con la fecha y hora actual.

Veamos un ejemplo con el uso de estos constructores y algunos de sus métodos

public class LocalDateTimeExample {

    private void show() {
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.of(date, time);

        System.out.println(dateTime.plusHours(10));
        System.out.println(dateTime.minusMonths(12));
        System.out.println(dateTime.toLocalDate());
    }

    public static void main(String[] args) {
        new LocalDateTimeExample().show();
    }
}