C++:
Calculando uma data no futuro ou passado
Como Fazer:
#include <iostream>
#include <ctime>
int main() {
// Pega o tempo atual
std::time_t atual = std::time(nullptr);
// Converte para struct tm para manipulacao mais facil
struct tm data = *std::localtime(&atual);
// Altera a data: 30 dias no futuro
data.tm_mday += 30;
// Normaliza a struct tm e converte de volta para time_t
std::time_t futuro = std::mktime(&data);
// Mostra a nova data
std::cout << "Data Futura: " << std::asctime(&data) << std::endl;
return 0;
}Exemplo de saída:
Data Futura: Wed Feb 26 14:55:21 2023Mergulho Profundo
Calcular datas não é algo novo – tem sido fundamental desde que começamos a medir o tempo. Em C++, nós já vimos a <ctime> e a <chrono> para lidar com o tempo. A <ctime> te dá uma maneira mais tradicional e baseada em C de tratar tempo, enquanto <chrono>, introduzida no C++11, te oferece uma abordagem moderna e tipicamente mais segura.
Antes de <chrono>, manipular datas exigia atenção cuidadosa, principalmente devido a possíveis erros ao normalizar datas (ajustando os dias e meses para valores válidos após manipulações).
Além disso, várias bibliotecas de terceiros, como a Boost.Date_Time, oferecem funcionalidades avançadas se você precisar de algo mais complexo.
Detalhes de implementação normalmente envolvem lidar com o formato de data e hora (struct tm), normalização de tempo (usando mktime() para ajustar struct tm) ou calcular diferenças de tempo.
Veja Também
- Documentação da biblioteca
<ctime>: https://en.cppreference.com/w/cpp/header/ctime - Documentação da biblioteca
<chrono>: https://en.cppreference.com/w/cpp/header/chrono - Biblioteca Boost.Date_Time: https://www.boost.org/doc/libs/release/libs/date_time/