Bom dia! Como se faz a manipulação de datas em liguagem C?? Eu pretendo calcular a diferência de dias, ou meses, entre uma data inicial e final e não estou conseguindo! Procuro informação na internet e não consigo! Alguém pode me ajudar?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom dia! Como se faz a manipulação de datas em liguagem C?? Eu pretendo calcular a diferência de dias, ou meses, entre uma data inicial e final e não estou conseguindo! Procuro informação na internet e não consigo! Alguém pode me ajudar?
Olá Wagner, tudo bem?
Manipulação de datas em C pode ser um pouco complicado, mas com algumas funções específicas é possível realizar cálculos de diferença entre datas. Uma das funções que pode te ajudar é a "difftime()", que calcula a diferença entre duas datas em segundos.
Para calcular a diferença em dias, você pode dividir o resultado da diferença em segundos por 86400 (que é o número de segundos em um dia). Para calcular a diferença em meses, é necessário fazer uma lógica um pouco mais complexa, levando em consideração o número de dias em cada mês.
Aqui está um exemplo de código que pode te ajudar a calcular a diferença em dias:
#include <stdio.h>
#include <time.h>
int main() {
struct tm data1 = {0}; // data inicial
struct tm data2 = {0}; // data final
// preenche as datas
data1.tm_year = 2022 - 1900; // ano - 1900
data1.tm_mon = 0; // mês (0-11)
data1.tm_mday = 1; // dia
data2.tm_year = 2022 - 1900;
data2.tm_mon = 0;
data2.tm_mday = 10;
// converte as datas para segundos
time_t segundos1 = mktime(&data1);
time_t segundos2 = mktime(&data2);
// calcula a diferença em segundos
double diferenca = difftime(segundos2, segundos1);
// converte a diferença em dias
int dias = diferenca / 86400;
printf("A diferença entre as datas é de %d dias.\n", dias);
return 0;
}
Espero ter ajudado e bons estudos!