Trabalho com datas em Kotlin: visão geral de bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com datas em Kotlin: visão geral de bibliotecas e ferramentas



Trabalhar com datas e horas é uma das tarefas principais na maioria das aplicações. Em Kotlin, como uma linguagem multiplataforma moderna, existem várias maneiras de trabalhar com datas. Neste artigo, vamos analisar as principais bibliotecas e ferramentas que ajudarão você a gerenciar eficientemente datas, horas, intervalos e fusos horários em projetos Kotlin.



1. Biblioteca padrão Java: java.time



Como Kotlin é totalmente compatível com Java, você pode usar a poderosa biblioteca java.time (JSR-310), que surgiu no Java 8. Esta é a forma recomendada para aplicações servidoras e Android (a partir da API 26+).



Classes principais:

  • LocalDate — data sem hora (ano, mês, dia).
  • LocalTime — hora sem data.
  • LocalDateTime — data e hora sem fuso horário.
  • ZonedDateTime — data e hora com fuso horário.
  • Instant — momento no tempo em UTC (tempo de máquina).
  • Duration e Period — intervalos de tempo.


Exemplo de uso:

import java.time.*

fun main() { // Data e hora atuais val now = LocalDateTime.now() println("Agora: $now")

// Criando uma data específica val birthDate = LocalDate.of(1990, Month.JUNE, 15) println("Data de nascimento: $birthDate")

// Trabalhando com fusos horários val zonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Moscow")) println("Hora em Moscou: $zonedDateTime")

// Diferença entre datas val from = LocalDate.of(2023, 1, 1) val to = LocalDate.now() val daysBetween = ChronoUnit.DAYS.between(from, to) println("Dias desde o Ano Novo: $daysBetween")

// Formatação val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm") println("Data formatada: ${now.format(formatter)}")}


Vantagens: integrada, confiável, suporte completo a todas as funções.

Desvantagens: não suportada em Android antigo (antes da API 26) sem dessugaring.



2. kotlinx-datetime (biblioteca multiplataforma da JetBrains)



Para projetos multiplataforma (KMP), a JetBrains criou a biblioteca kotlinx-datetime. Ela fornece uma API unificada para todas as plataformas (JVM, Native, JS).



Classes principais:

  • Instant — momento no tempo em UTC.
  • LocalDateTime — data+hora sem fuso horário.
  • LocalDate e LocalTime.
  • DateTimePeriod e DatePeriod — intervalos.
  • TimeZone — fuso horário.


Exemplo de uso:

import kotlinx.datetime.*

fun main() { // Momento atual val now = Clock.System.now() println("UTC atual: $now")

// Convertendo para hora local val localDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Hora local: $localDateTime")

// Criando uma data val date = LocalDate(2024, 12, 25) println("Data: $date")

// Diferença entre datas val start = LocalDateTime(2024, 1, 1, 0, 0) val end = LocalDateTime(2024, 12, 31, 23, 59) val period = start.periodUntil(end, DateTimeUnit.DAY) println("Dias entre: $period")

// Formatação (requer biblioteca separada ou manual) println("Ano: ${localDateTime.year}, mês: ${localDateTime.monthNumber}")}


Vantagens: multiplataforma, leve, suporte oficial.

Desvantagens: recursos limitados de formatação (sem DateTimeFormatter integrado).

Recommendations