kotlinx-datetime para Kotlin: guia completo com exemplos práticos

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

kotlinx-datetime: trabalho multiplataforma com data e hora em Kotlin

1. O que é e por que usar

kotlinx-datetime é a biblioteca oficial da JetBrains para trabalhar com data e hora no ecossistema Kotlin. Sua principal característica é a multiplataforma: o mesmo código funciona em JVM, JS (navegador e Node.js), Native (iOS, macOS, Windows, Linux) e Wasm. Isso elimina a necessidade de escrever wrappers dependentes de plataforma ou usar bibliotecas diferentes para cada ambiente.

Por que usar? A biblioteca padrão do Kotlin/JVM utiliza java.time, que não está disponível em outras plataformas. Para Kotlin/Native e Kotlin/JS, era necessário usar APIs nativas (NSDate, Date) ou bibliotecas de terceiros. O kotlinx-datetime resolve esse problema oferecendo uma API unificada baseada na especificação ISO-8601. Ela inclui classes para representar instantes (Instant), datas sem hora (LocalDate), horas sem data (LocalTime), data com hora (LocalDateTime), fusos horários (TimeZone) e períodos (DateTimePeriod).

A biblioteca é ideal para projetos que usam Kotlin Multiplatform (KMP), aplicações server-side com Ktor, apps Android (como substituto do java.time) e até scripts e utilitários de console. Ela é leve, não possui dependências externas e é ativamente mantida pela comunidade.

2. Instalação

A biblioteca é distribuída via Maven Central. Para adicioná-la, inclua a dependência no arquivo build.gradle.kts (ou build.gradle). Abaixo está o código exato para Gradle Kotlin DSL.

// build.gradle.kts
repositories {
    mavenCentral()
}

dependencies {
    // Biblioteca principal
    implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")

    // Se você estiver usando um projeto multiplataforma, adicione em commonMain:
    // commonMain.dependencies {
    //     implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")
    // }
}

Importante: A versão 0.6.1 é a última estável no momento da escrita deste artigo. Verifique a versão mais recente nos releases do GitHub. Para Gradle Groovy DSL, o comando é similar, mas sem aspas nas strings.

Se você usa Maven, adicione no pom.xml:

<dependency>
    <groupId>org.jetbrains.kotlinx</groupId>
    <artifactId>kotlinx-datetime</artifactId>
    <version>0.6.1</version>
</dependency>

Para Gradle Kotlin DSL em um projeto multiplataforma (KMP), adicione no commonMain:

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")
        }
    }
}

3. Início rápido

Exemplo mínimo funcional: obter o instante atual, formatá-lo e exibi-lo no console.

import kotlinx.datetime.*

fun main() {
    // Obtém o instante atual em UTC
    val now: Instant = Clock.System.now()
    println("Instante atual em UTC: $now")

    // Converte para data e hora local (usando o fuso horário do sistema)
    val localDateTime: LocalDateTime = now.toLocalDa                    

Recommendations