TRABAJAR CON FECHAS EN JAVA
La forma clásica de trabajar con fechas en Java es con las clases Date y Calendar. La primera representa un punto cronológico en el tiempo, expresado en milisegundos. La segunda nos ofrece una interfaz más rica con la que poder trabajar con fechas.
Un ejemplo de uso sería el siguiente:
Calendar calendar = Calendar.getInstance();
// instancia con el tiempo local
calendar.set(Calendar.YEAR, 1990);
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.DATE, 10);
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MiNUTE, 32);
Date date = calendar.getTime();
// convertimos de Calendar a Date
Sin embargo, esta API tiene algunos problemas. No tiene un diseño demasiado bueno, puesto que no pueden utilizarse fechas y horas por separado, y no thread safe, lo que puedo ocasionar problemas de concurrencia. Por eso, Java 8 introdujo una nueva API que ofrecía fechas inmutables, adaptadas a diferentes calendarios y con un diseño mejorado que nos ofrece métodos factoría. Podemos encontrar esta API en el paquete java.time.
Las clases base son LocalTime, LocalDate y LocalDateTime.
LocalDateTime timepoint = LocalDateTime.now();
// Fecha y hora
LocalDate date = LocalDate.of(2020, Month.JULY, 27);
// Obtenemos la fecha indicada
LocalTime.of(17, 30);
// obtenemos la hora indicada
LocalTime.parse("17:30:00");
// Otra forma para la hora
// Usamos la convención estándar parar get
Month month = timepoint.getMonth();
int day = timepoint(getDayOfMonth();
// Son inmutables, así que cambiar el valor retorna un objeto
LocalDateTime happyTwenties = timepoint.withYear(1920)
.withMonth(Month.January)
.withDayOfMonth(1)
.plusWeeks(3);
El paquete también ofrece otras clases adicionales, como Period o Duration, que sirven para representar laspos de tiempos, algo que no estaba soportado por Date y Calendar. Además, existen otras herramientas y conceptos más avanzados que puedes investigar si estás interesado.
Formateado de texto
Si tratamos de sacar por pantalla el valor de números decimales o fechas, podemos encontrarnos con que el resultado no es demasiado legible ni atractivo. Java nos ofrece algunas clases para trabajar con el formato del texto en el paquete java.text. Veamos un ejemplo a continuación:
Date date = new Date(); // Fecha Actual
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String date = sdf.format(date);
No hay comentarios:
Publicar un comentario