Trabajo con fechas y horas en Kotlin: de la A a la Z — guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con fechas y horas en Kotlin



Trabajar con fechas y horas es una de las tareas más comunes en el desarrollo moderno. Ya sea para registro de eventos, cálculo de plazos, planificación de tareas o visualización de interfaces de usuario, no se puede prescindir de un manejo adecuado de las marcas de tiempo. En Kotlin, que es totalmente compatible con Java, el estándar de facto es el paquete java.time, introducido en Java 8. Este paquete reemplazó a los obsoletos java.util.Date y java.util.Calendar, ofreciendo una API segura para subprocesos, inmutable e intuitiva.



En este artículo, analizaremos todos los aspectos clave del trabajo con fechas y horas en Kotlin: desde la creación de objetos hasta su formato, análisis y realización de operaciones aritméticas. Aprenderá a usar LocalDate, LocalTime, LocalDateTime, Instant, Duration y Period con ejemplos prácticos.



1. Clases principales para trabajar con fechas y horas



El paquete java.time contiene varias clases clave, cada una de las cuales resuelve una tarea específica. Veámoslas en detalle.



1.1 LocalDate — trabajo con fecha sin hora



La clase LocalDate representa una fecha (año, mes, día) sin tener en cuenta la hora ni la zona horaria. Es ideal para cumpleaños, eventos de calendario y fechas sin vincular a un momento específico.



import java.time.LocalDate

fun main() { // Fecha actual val today = LocalDate.now() println("Hoy: $today") // 2025-04-05

// Fecha específica val newYear = LocalDate.of(2025, 1, 1) println("Año Nuevo: $newYear")

// Análisis desde cadena val parsedDate = LocalDate.parse("2025-12-31") println("Fecha analizada: $parsedDate")}


1.2 LocalTime — trabajo con hora sin fecha



LocalTime almacena solo la hora (horas, minutos, segundos, nanosegundos). Es útil para almacenar la hora de inicio de la jornada laboral, horarios o temporizadores.



import java.time.LocalTime

fun main() { // Hora actual val now = LocalTime.now() println("Ahora: $now")

// Hora específica val meetingTime = LocalTime.of(14, 30, 0) println("Hora de la reunión: $meetingTime")

// Análisis val parsedTime = LocalTime.parse("09:15:30") println("Hora analizada: $parsedTime")}


1.3 LocalDateTime — combinación de fecha y hora



LocalDateTime combina LocalDate y LocalTime. Es la clase más utilizada para almacenar un momento en el tiempo sin zona horaria.



import java.time.LocalDateTime

fun main() { // Fecha y hora actuales val current = LocalDateTime.now() println("Ahora: $current")

// Creación a partir de componentes val specific = LocalDateTime.of(2025, 4, 5, 10, 30, 0) println("Momento específico: $specific")

// Combinación de fecha y hora val date = LocalDate.of(2025, 12, 25) val time = LocalTime.of(18, 0) val christmas = LocalDateTime.of(date, time) println("Navidad: $christmas")}


1.4 Instant — momento en tiempo UTC



Instant representa un punto en la línea de tiempo en formato Unix timestamp (cantidad de segundos y nanosegundos desde el 1 de enero de 1970). Es indispensable para almacenar registros, trabajar con bases de datos e intercambiar datos entre sistemas.



import java.time.Instant

fun main() { // Momento actual en UTC val now = Instant.now() println("Ahora (UTC): $now")

// Desde Unix timestamp val fromEpoch = Instant.ofEpochSecond(1_700_000_000) println("Desde timestamp: $fromEpoch")

// Conversión a milisegundos val millis = now.toEpochMilli() println("Milisegundos: $millis")}


2. Formato y análisis de fechas y horas



Para convertir fechas en cadenas

Blogs

Book Recommendations