Capítulo 10. Trabajando con fecha y hora
Mi parte ya está hecha. Después de crear el código de los programas que Pedro necesita, los he escondido dentro de una carpeta del sistema. No me costó ni media hora hacerlo. Ya no necesito más el ordenador, así que iré a leer un poco.
Estoy bastante aliviado porque, ahora que esta parte del plan salga bien, no depende de mí. A mí solo me queda esperar a ver qué pasa. Incluso el riesgo de que me pillen es mínimo. Solo podrían descubrirme si Pedro o Bud me delataran, pero confío en ellos.
Me han informado de que el primo de Chani vuelve a verme esta tarde, así que le comentaré que voy a salir pronto. Mi excursión será corta, de unas horas, pero aún no sé exactamente qué día. Por lo tanto, deberemos seguir en contacto.

Mañana por la tarde, Pedro vendrá a la biblioteca y, en menos de diez minutos, tendrá que utilizar mis programas para crear el dispositivo de distracción. Antes de que empiece a sonar la alarma, tendrá unos minutos para salir de la biblioteca y volver a la celda. Así, nadie sospechará de él.
Una vez que suene la alarma, los funcionarios de prisiones dedicarán todo su esfuerzo a apagarla y a comprobar que el sistema de seguridad sigue activado. Bud utilizará ese tiempo para conseguir abrir la celda y atravesar el primer pasillo, en el que no debería haber ningún guardia. Aunque tendrá que tener cuidado con las cámaras
En el segundo pasillo hay un vigilante que nunca abandona su puesto, pero hace patrullas en círculos. Así que, sabiendo su patrón de vigilancia, Bud deberá sortearlo para evitar que le vea. Recuerda que, cuando consigan desactivar la alarma, se apagarán las luces. Eso dará aún más tiempo a Bud. En teoría, será tiempo suficiente para que entre al despacho sin ser visto.
La parte más arriesgada de todo el plan será la salida del despacho. Bud tendrá que controlar las pautas de vigilancia de los guardias para salir exactamente en el momento preciso. Deberá tener en cuenta también los patrones de las cámaras, exactamente lo mismo que hizo para llegar hasta el despacho.
Para llevar a cabo este complicado plan, Bud va a tener que utilizar algunos conceptos de Java que yo aún no he aprendido, como trabajar con fecha y hora. Yo no voy a necesitar saber hacer eso, pero me gustaría aprenderlo de todos modos.
Le he pedido a Bud que me enseñe y él está encantado. Puede que al final no esté tan tranquilo como parece y a lo mejor le apetezca mantener la mente ocupada. Sea como fuere, yo se lo agradezco. Me gusta aprender cosas nuevas y, la verdad, también me viene bien tener la cabeza ocupada.
Teoría para Trabajar con Fechas y Horas en Java
La explicación teórica en este tema va a ser un poco diferente a la de los anteriores. Bastante más resumida. La primera razón es que no creo que sea necesario mencionar la importancia que tiene la fecha y hora en cualquier aplicación o programa. Todos tenemos un teléfono móvil o un ordenador y sabemos que muchas funciones de nuestros dispositivos ni siquiera funcionan sin los datos horarios correctos.
La segunda razón es que, a estas alturas, ya eres capaz de comprender y escribir una gran parte del código que se utiliza en Java. Entiendes, entre otras cosas, lo que son las variables, las estructuras principales y el orden de funcionamiento de los programas. Por lo tanto, esta parte te va a resultar pan comido.
La tercera razón es que la sintaxis de este tema no es nada compleja. Ni siquiera se puede decir que sea una estructura. Simplemente utilizaremos una línea u otra de código dependiendo exactamente del tipo de fecha u hora que necesitemos obtener.
Las clases LocalTime, LocalDate y LocalDateTime
- LocalTime representa únicamente la hora del día, sin incluir ninguna información sobre la fecha o la zona horaria.
- LocalDate representa solo una fecha, sin incluir ninguna información sobre la hora o la zona horaria.
- LocalDateTime combina la información de LocalDate (fecha) y LocalTime (hora), representando tanto la fecha como la hora, pero sin incluir información sobre la zona horaria.
Las importamos de la siguiente forma:
- import java.time.LocalTime;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
Ahora, voy a mostrarte, punto por punto, el código que necesitarás utilizar dependiendo de cada situación concreta.
– Obtener la fecha actual
Para obtener la fecha actual en Java, se utiliza la clase LocalDate. Esta clase representa una fecha sin hora, en formato ISO (aaaa-mm-dd).
LocalDate fechaActual = LocalDate.now();
– Obtener la hora actual
Para obtener la hora actual, se usa la clase LocalTime, que representa una hora sin fecha en formato hh:mm
LocalTime horaActual = LocalTime.now();
– Obtener la fecha y hora actual
La clase LocalDateTime combina LocalDate y LocalTime para representar una fecha y una hora en el mismo objeto.
LocalDateTime fechaHoraActual = LocalDateTime.now();
– Crear una fecha específica
Puedes crear una fecha específica utilizando el método of de la clase LocalDate, que requiere año, mes y día como parámetros.
LocalDate fecha = LocalDate.of(2024, 5, 29);
– Crear una hora específica
Similarmente, LocalTime también tiene un método of para crear una hora específica, utilizando horas, minutos y segundos como parámetros.
LocalTime hora = LocalTime.of(14, 30, 45);
– Sumar días a una fecha
Puedes sumar días a una fecha utilizando el método plusDays de la clase LocalDate.
LocalDate nuevaFecha = fechaActual.plusDays(10); // Diez son los días sumados en este ejemplo
– Restar días a una fecha
LocalDate nuevaFecha = fechaActual.minusDays(10); // Diez son los días restados
– Sumar horas a una hora
LocalTime nuevaHora = horaActual.plusHours(3); // 3 son las horas sumadas en este ejemplo
– Restar horas a una hora
Para restar horas a una hora, se utiliza el método minusHours de la clase LocalTime.
LocalTime nuevaHora = horaActual.minusHours(3); // 3 son las horas restadas en este ejemplo
– Comparar dos fechas
Para comparar dos fechas, LocalDate proporciona métodos como isAfter, isBefore e isEqual. boolean esDespues = fecha1.isAfter(fecha2);
boolean esAntes = fecha1.isBefore(fecha2); boolean esIgual = fecha1.isEqual(fecha2);
– Formatear una fecha
Para formatear una fecha en un formato específico, se usa la clase DateTimeFormatter. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(«dd/MM/yyyy»);
String fechaFormateada = fecha.format(formatter);
– Obtener la diferencia entre dos fechas
Para calcular la diferencia entre dos fechas, se usa la clase Period Period diferencia = Period.between(fechaInicio, fechaFin);
Resumen de lo aprendido
En el lenguaje de programación Java, si necesitas obtener la fecha actual, puedes usar la clase LocalDate, mientras que, para obtener la hora actual, se utiliza la clase LocalTime. Cuando se requiere manejar tanto la fecha como la hora conjuntamente, la clase LocalDateTime es la opción adecuada. Para establecer una fecha específica, puedes emplear el método of de LocalDate. De manera similar, para definir una hora específica, se utiliza el método of de LocalTime.
Los métodos plusDays y minusDays de LocalDate te permiten sumar o restar días a una fecha, respectivamente. Asimismo, con los métodos plusHours y minusHours de LocalTime puedes sumar o restar horas a una hora determinada.
La clase LocalDate proporciona métodos como isAfter, isBefore e isEqual para comparar dos fechas. Para dar formato a una fecha en un estilo específico, se usa la clase DateTimeFormatter. Finalmente, para determinar la diferencia entre dos fechas, se emplea la clase Period.