Trabalhando com datas e horas em Swift: do A ao Z

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 Swift

Trabalhar com datas e horas é uma das tarefas essenciais no desenvolvimento de aplicativos para iOS e macOS. Desde a simples exibição da data atual até cálculos complexos de intervalos de tempo e gerenciamento de fusos horários, o Swift oferece um conjunto de ferramentas poderoso e flexível. Neste artigo, vamos explorar as principais classes e estruturas: Date, DateFormatter, Calendar, DateComponents e TimeInterval. Você aprenderá a criar, formatar, comparar e manipular datas na prática.



Principais classes e estruturas

Em Swift, vários tipos fundamentais são usados para trabalhar com datas. Vamos analisar cada um deles.

  • Date — estrutura que representa um momento específico no tempo. Ela não depende de calendário ou fuso horário.
  • DateFormatter — classe para converter data em string e vice-versa.
  • Calendar — estrutura que descreve um calendário (gregoriano, budista, etc.) e fornece métodos para trabalhar com componentes de data.
  • DateComponents — estrutura para armazenar componentes individuais de data (ano, mês, dia, hora, minuto, etc.).
  • TimeInterval — tipo (Double) que representa uma quantidade de segundos.


Trabalhando com Date e DateFormatter

Vamos começar com o mais simples: obter a data atual e exibi-la ao usuário.



Obtendo a data atual

import Foundation

let currentDate = Date()print("Data e hora atuais: \\(currentDate)")// Saída: Data e hora atuais: 2025-04-05 12:30:00 +0000


Formatando a data

Para que a data pareça familiar, usamos DateFormatter:

let formatter = DateFormatter()formatter.dateFormat = "dd.MM.yyyy HH:mm"let dateString = formatter.string(from: currentDate)print("Data formatada: \\(dateString)")// Saída: Data formatada: 05.04.2025 12:30


Convertendo string em data

let dateString = "2025-04-05 14:00"formatter.dateFormat = "yyyy-MM-dd HH:mm"if let parsedDate = formatter.date(from: dateString) {    print("Data convertida: \\(parsedDate)")} else {    print("Erro na conversão")}

Importante: sempre verifique se date(from:) não retorna nil, caso contrário o aplicativo pode travar.



Manipulação de datas com Calendar e DateComponents

Frequentemente é necessário adicionar dias, meses ou calcular a diferença entre datas. É aqui que o Calendar entra em ação.



Adicionando e subtraindo tempo

let calendar = Calendar.currentlet oneWeekLater = calendar.date(byAdding: .day, value: 7, to: currentDate)!let oneMonthAgo = calendar.date(byAdding: .month, value: -1, to: currentDate)!

print("Daqui a uma semana: \\(formatter.string(from: oneWeekLater))")print("Um mês atrás: \\(formatter.string(from: oneMonthAgo))")


Extraindo componentes da data

let components = calendar.dateComponents([.year, .month, .day, .hour], from: currentDate)if let year = components.year, let month = components.month {    print("Hoje: \\(year)-\\(month)")}


Criando uma data a partir de componentes

var newComponents = DateComponents()newComponents.year = 2025newComponents.month = 12newComponents.day = 25newComponents.hour = 10newComponents.minute = 0

if let christmas = calendar.date(from: newComponents) { print("Natal: \\(formatter.string(from: christmas))")}


Comparação de datas e trabalho com TimeInterval

O Swift permite comparar datas facilmente e calcular intervalos de tempo.



Comparação de datas

let now = Date()let futureDate = calendar.date(byAdding: .day, value: 10, to: now)!

if futureDate > now { print("

Blogs

Book Recommendations