Calendar e DateComponents
Faça cálculos de datas entre calendários.
Calendar e DateComponents é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Calendar e DateComponents
Um Calendar interpreta um Date em unidades compreensíveis para as pessoas, como ano, mês e dia. DateComponents armazena esses valores separados.
O calendário atual
Calendar.current reflete as configurações do usuário. Ele é a ponte entre instantes brutos de Date e campos nomeados.
import Foundation
let cal = Calendar.current
print("Calendar identifier: \(cal.identifier)")Extraindo componentes
dateComponents(_:from:) extrai os campos solicitados de uma data e os coloca em um valor DateComponents.
import Foundation
let cal = Calendar.current
let comps = cal.dateComponents([.year, .month, .day], from: Date())
print("Year is set: \(comps.year != nil)")Lendo um único campo
O atalho component(_:from:) retorna diretamente um campo como um Int.
import Foundation
let cal = Calendar.current
let weekday = cal.component(.weekday, from: Date())
print("Weekday number between 1 and 7: \(1...7 ~= weekday)")Construindo uma data a partir de componentes
Preencha um DateComponents e peça ao calendário para produzir o Date correspondente com date(from:).
import Foundation
var comps = DateComponents()
comps.year = 2024
comps.month = 12
comps.day = 25
let cal = Calendar.current
if let date = cal.date(from: comps) {
print("Built a date: \(date.timeIntervalSince1970 > 0)")
}Aritmética de datas
date(byAdding:to:) adiciona uma quantidade de componentes com segurança, tratando para você a duração dos meses e os anos bissextos.
import Foundation
let cal = Calendar.current
let now = Date()
if let nextWeek = cal.date(byAdding: .day, value: 7, to: now) {
print(nextWeek > now)
}Adicionando várias unidades
Você pode adicionar várias unidades de uma só vez passando um DateComponents que descreva o deslocamento.
import Foundation
let cal = Calendar.current
var offset = DateComponents()
offset.month = 1
offset.day = 3
if let future = cal.date(byAdding: offset, to: Date()) {
print(future > Date())
}Diferenças entre datas
Inverta a operação: dateComponents(_:from:to:) retorna as unidades decorridas entre duas datas.
import Foundation
let cal = Calendar.current
let now = Date()
let later = now.addingTimeInterval(3 * 86400)
let diff = cal.dateComponents([.day], from: now, to: later)
print("Days apart: \(diff.day ?? -1)")Início do dia
startOfDay(for:) retorna a meia-noite da data no calendário, o que é útil para agrupar eventos por dia.
import Foundation
let cal = Calendar.current
let midnight = cal.startOfDay(for: Date())
print(midnight <= Date())Verificando o mesmo dia
isDate(_:inSameDayAs:) informa se duas datas estão no mesmo dia do calendário.
import Foundation
let cal = Calendar.current
let now = Date()
let soon = now.addingTimeInterval(60)
print(cal.isDate(now, inSameDayAs: soon))Por que usar Calendar
Fazer cálculos adicionando segundos brutos gera resultados incorretos nas transições de DST e nos limites entre meses. Use sempre Calendar para cálculos de dia, mês e ano.
import Foundation
let cal = Calendar.current
// Correct: add 1 month, not 30 * 86400 seconds.
if let d = cal.date(byAdding: .month, value: 1, to: Date()) {
print("Added a month correctly: \(d > Date())")
}Verificação rápida
Qual método adiciona corretamente um mês a uma data?
Recapitulação
Calendar converte entre Date e campos nomeados por meio de DateComponents. Você extraiu campos, construiu datas, adicionou unidades com date(byAdding:), calculou diferenças e viu por que os cálculos de calendário são melhores do que a aritmética com segundos brutos. A seguir: formatação de datas para exibição.
Perguntas Frequentes
A aula “Calendar e DateComponents” é grátis?
Sim — o texto completo de “Calendar e DateComponents” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Calendar e DateComponents”?
Faça cálculos de datas entre calendários. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Calendar e DateComponents”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O Tipo Date e Intervalos de Tempo
- Calendar e DateComponents
- Formatação de Datas
- Fusos Horários e Localidades