Trabajo con fechas en Kotlin: resumen de bibliotecas y herramientas
El trabajo con fechas y horas es una de las tareas clave en el desarrollo moderno. Kotlin, como lenguaje moderno, ofrece varias formas potentes de gestionar fechas. En este artículo, veremos las principales bibliotecas y enfoques que le ayudarán a trabajar eficazmente con fechas en proyectos Kotlin, incluyendo el desarrollo Android y aplicaciones de servidor.
1. Biblioteca estándar java.time (Java 8+)
A partir de Java 8, los desarrolladores obtuvieron acceso a una API completamente rediseñada para trabajar con fechas: java.time. Dado que Kotlin es totalmente compatible con Java, puede usar esta potente herramienta directamente. Esta es la forma más común para aplicaciones de servidor en Kotlin.
Clases principales:
LocalDate— fecha sin hora (año, mes, día)LocalTime— hora sin fechaLocalDateTime— fecha y hora sin zona horariaZonedDateTime— fecha y hora con zona horariaInstant— momento en el tiempo en UTCDurationyPeriod— para trabajar con intervalos
import java.time.LocalDateimport java.time.LocalDateTimeimport java.time.format.DateTimeFormatter
fun main() { // Fecha actual val today = LocalDate.now() println("Hoy: $today")
// Creación de una fecha específica val birthDate = LocalDate.of(1990, 5, 15) println("Fecha de nacimiento: $birthDate")
// Formateo val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy") val formatted = today.format(formatter) println("Fecha formateada: $formatted")
// Análisis de cadena val parsedDate = LocalDate.parse("2024-01-01") println("Fecha analizada: $parsedDate")
// Trabajo con fecha y hora val now = LocalDateTime.now() println("Ahora: $now")}2. kotlinx-datetime — biblioteca oficial de JetBrains
Para proyectos que usan Kotlin Multiplatform, la biblioteca estándar kotlinx-datetime es la mejor opción. Proporciona una API unificada para todas las plataformas (JVM, JS, Native, Android).
Configuración (build.gradle.kts):
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")}Funcionalidades principales:
Instant— momento en el tiempoLocalDateTime— fecha y hora localLocalDate— fecha localLocalTime— hora localTimeZone— zonas horariasDateTimePeriod— período de tiempo
import kotlinx.datetime.*
fun main() { // Fecha y hora actual val now = Clock.System.now() println("Momento actual: $now")
// Conversión a componentes locales val localDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Hora local: $localDateTime")
// Creación de fecha val date = LocalDate(2024, 12, 25) println("Fecha: $date")
// Formateo val formatted = localDateTime.toString() println("Representación en cadena: $formatted")
// Análisis val parsed = Instant.parse("2024-01-01T12:00:00Z") println("Instant analizado: $parsed")
// Trabajo con zonas horarias val moscowTime = now.toLocalDateTime(TimeZone.of("Europe/Moscow")) println("Hora de Moscú: $moscowTime")}3. ThreeTenABP — para compatibilidad inversa en Android
Si su aplicación es compatible con Android API inferior a 26 (Android 8.0), no puede usar java.time directamente. En este caso, la biblioteca ThreeTenABP<
También en la biblioteca
Rate Limiting en PHP: guía completa para limitar solicitudes
ORM para C++: comparación y ejemplos de uso (ODB, SOCI, SQLiteCpp)
Análisis de HTML en C# (.NET): revisión de bibliotecas y ejemplos de código
Trabajo con archivos ZIP en C++: bibliotecas libzip y zlib
Análisis de HTML en C# (.NET): bibliotecas HtmlAgilityPack y AngleSharp