Una librería ligera para trabajar con fechas y tiempos en Android.
Proporciona una API sencilla para manipular, formatear y comparar fechas de manera segura.
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://jitpack.io")
}
}[versions]
dateTime = "1.0.0"
[libraries]
dateTime = { module = "com.github.LeandroLCD:DateTime", version.ref = "dateTime" }dependencies {
implementation(libs.dateTime)
}class MyApp : Application() {
override fun onCreate() {
super.onCreate()
DateTime.init(this) //Deprecado en versiones recientes ya no se requiere inicialización.
}
}- Crear fechas desde string, milisegundos o la fecha/hora actual.
- Conversión entre LocalDateTime, ZonedDateTime y millis.
- Sumar o restar días, meses, años, minutos, segundos.
- Calcular diferencias entre fechas con
TimeSpan. - Formateo flexible mediante patrones o tipos predefinidos.
- Validaciones seguras para días y meses inválidos.
- Builder simple para inicializar fechas personalizadas.
// Fecha actual con zona horaria del sistema
val now = DateTime.now()
// Fecha actual en una zona horaria específica
val nowInUtc = DateTime.now("UTC")
// Desde string (intenta con varios patrones comunes)
val fromString = DateTime.fromString("2023-12-25")
// Desde milisegundos
val fromMillis = DateTime.fromMillis(System.currentTimeMillis())val date = DateTime.now()
// Usando tipo Large
val formattedLarge = date.format(FormatType.Large(delimiter = "-"))
// -> 04-10-2025 14:30:00 Europe/Madrid
// Usando tipo Short
val formattedShort = date.format(FormatType.Short(delimiter = "/"))
// -> 04/10/2025
// Usando patrón personalizado
val custom = date.format("dd MMM yyyy HH:mm:ss")
// -> 04 Oct 2025 14:30:00val date = DateTime.now()
val nextWeek = date.addDays(7)
val nextMonth = date.addMonths(1)
val nextYear = date.addYears(1)
val firstDay = date.firstDayOfMonth()
val lastDay = date.lastDayOfMonth()val start = DateTime.fromString("2020-01-01")
val end = DateTime.fromString("2023-05-15")
val diff = end.timeSpan(start)
// diff -> TimeSpan(years=3, months=4, days=14, hours=0, minutes=0, seconds=0)val millis = date.toMillis()
val utcMillis = date.toMillisUTC()
val ldt = date.toLocalDateTime()
val zdt = date.toZonedDateTime()val date = DateTime.Builder()
.setYear(2025)
.setMonth(12)
.setDay(31)
.build()La librería lanza InvalidFormatException cuando el string o zona horaria no son válidos:
try {
val date = DateTime.fromString("invalid-date")
} catch (e: InvalidFormatException) {
// manejar error
}