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
- Documentação da Apple sobre
DateComponents
: Documentação DateComponents - Tutorial de Swift sobre manipulação de datas: Ray Wenderlich’s Date and Time Tutorial