0Pricing
Swift Academy · Aula

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

  1. O Tipo Date e Intervalos de Tempo
  2. Calendar e DateComponents
  3. Formatação de Datas
  4. Fusos Horários e Localidades
← Voltar para Swift Academy