Calculando uma data no futuro ou passado

Swift:
Calculando uma data no futuro ou passado

Como Fazer:

import Foundation

// Data atual
let hoje = Date()

// Calendário padrão
let calendario = Calendar.current

// Adicionando 5 dias à data atual
if let dataFutura = calendario.date(byAdding: .day, value: 5, to: hoje) {
    print("Daqui a 5 dias: \(dataFutura)")
} else {
    print("Erro ao calcular a data futura.")
}

// Subtraindo 30 dias da data atual
if let dataPassada = calendario.date(byAdding: .day, value: -30, to: hoje) {
    print("Há 30 dias: \(dataPassada)")
} else {
    print("Erro ao calcular a data passada.")
}

Sample output:

Daqui a 5 dias: 2023-04-12 14:00:00 +0000
Há 30 dias: 2023-03-08 14:00:00 +0000

Mergulho Profundo

A capacidade de calcular datas é essencial desde o início da computação. Algoritmos para cálculo de datas têm raízes históricas, como o Algoritmo de Gauss para determinar a data da Páscoa. Em Swift, a Foundation nos oferece DateComponents para manipular elementos de datas facilmente.

Alternativamente, é possível utilizar timestamps UNIX (representação de tempo em segundos desde 1970) para efetuar cálculos, mas isso é menos legível e mais suscetível a erros com fusos horários e regras de calendário.

Em termos de implementação, cuidado com fusos horários e a mudança para horário de verão, que podem influenciar o cálculo de datas. O Swift lida bem com esses detalhes se usarmos Calendar e DateComponents.

Ver Também