Trabalhando com datas e horas em Kotlin: guia completo

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

Introdução ao trabalho com datas e horas em Kotlin

Trabalhar com datas e horas é uma das tarefas principais no desenvolvimento de qualquer aplicação. Seja para registro de eventos, cálculo de prazos, exibição de calendário ou trabalho com timestamps — não é possível prescindir de um conjunto de ferramentas confiável. No ecossistema Kotlin, para esses fins, é utilizada a poderosa biblioteca java.time, que substituiu as obsoletas java.util.Date e java.util.Calendar. Graças à compatibilidade total com Java, o Kotlin permite usar todos os recursos do java.time diretamente, além de adicionar extensões convenientes e açúcar sintático.

Neste artigo, vamos detalhar como criar, formatar, fazer parsing e converter datas e horas em Kotlin. Você conhecerá as principais classes, como LocalDate, LocalTime, LocalDateTime, ZonedDateTime e Instant, e também aprenderá a trabalhar com períodos e durações. Todos os exemplos de código são escritos em Kotlin puro e estão prontos para uso.



Principais classes para trabalhar com datas e horas

A biblioteca java.time oferece várias classes principais, cada uma resolvendo uma tarefa específica. Vamos examiná-las em detalhes.



LocalDate — trabalhando com data sem hora

A classe LocalDate representa uma data (ano, mês, dia) sem considerar hora e fuso horário. É ideal para aniversários, eventos de calendário e tarefas onde a hora não importa.

import java.time.LocalDate

fun main() { // Data atual val today = LocalDate.now() println("Hoje: $today")

// Data específica val specificDate = LocalDate.of(2024, 12, 25) println("Natal: $specificDate")

// Parsing a partir de string val parsedDate = LocalDate.parse("2024-12-25") println("Parseado: $parsedDate")}


LocalTime — trabalhando com hora sem data

LocalTime armazena apenas a hora (horas, minutos, segundos, nanossegundos). É usado para horários, temporizadores e timestamps sem vínculo com a data.

import java.time.LocalTime

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

// Hora específica val lunchTime = LocalTime.of(13, 30) println("Almoço às: $lunchTime")

// Parsing val parsedTime = LocalTime.parse("15:45:30") println("Parseado: $parsedTime")}


LocalDateTime — combinação de data e hora

LocalDateTime combina LocalDate e LocalTime. É a classe mais usada para armazenar um momento no tempo sem considerar o fuso horário.

import java.time.LocalDateTimeimport java.time.LocalDateimport java.time.LocalTime

fun main() { // Momento atual val now = LocalDateTime.now() println("Agora: $now")

// A partir de componentes separados val date = LocalDate.of(2024, 12, 25) val time = LocalTime.of(10, 0) val christmasMorning = LocalDateTime.of(date, time) println("Manhã de Natal: $christmasMorning")

// Método combinado val newYear = LocalDateTime.of(2025, 1, 1, 0, 0) println("Ano Novo: $newYear")}


Formatação e parsing de datas

Para converter datas em strings e vice-versa, é usada a classe DateTimeFormatter. Ela suporta vários formatos predefinidos e também permite criar padrões personalizados.



Formatando data em string

import java.time.LocalDateTimeimport java.time.format.DateTimeFormatter

fun main() { val now = LocalDateTime.now()

// Formato ISO padrão val isoFormat = now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) println("ISO: $isoFormat")

// Formato personalizado val customFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss") va

Blogs

Book Recommendations