Hola buenas tardes sr
Tengo una duda con un programa, me piden encontrar la diferencia de dos fechasa en años, meses y días con la fecha de nacimiento de una persona, y la fecha del sistema.
No sabía nada de nada con fechas, y me día a la tarea de usar las funciones de la libreria <time.h>y ya tengo la fecha del sistema, pregunto la fecha de la persona, y creo una estructura tm para luego pasarla como tipo de dato time_t y luego usar la funcion difftime y me regresa la diferencia en segundos, bien.
Mi pregunta es, cómo puedo hacer para convertir esos segundos de tal forma que pueda mostrar en pantalla: ud tiene X años, Y meses, Z días de edad.
La diferencia en segundos, la pasé a time_t y este con ctime la pasé a char* para mostrar en pantalla, pero me da con mi fecha de nacimiento por ejemplo, 7 de julio de 1993 y necesito es la diferencia no una fecha.
pongo el codigo por si acaso:
Código C++:
Ver original#include <iostream>
#include <time.h>
using std::cout;
using std::cin;
using std::endl;
int main()
{
time_t now
= time(0); // fecha actal
struct tm time_str; // asigno de una vez valores para el 14 de sep de 1986
time_str.tm_year = 1986-1900;
time_str.tm_mon = 9-1;
time_str.tm_mday = 14;
time_str.tm_hour = 0;
time_str.tm_min = 0;
time_str.tm_sec = 0;
time_str.tm_isdst = -1;
time_t nacido
= mktime(&time_str
); double diferencia
= difftime(now
, nacido
);
// Hasta aqui tengo la diferencia en segundos, luego la "convierto" en fecha.
time_t difer = diferencia;
time_t* pRta = &difer;
cout << "\n\ndiferencia :D -> " << rta; // me regresa julio 16 de 1993
return 0;
}
El programa en mi caso deberia sacar: 23 años, 7 meses, 16 días // mas o menos a lapiz
Agradezco sus comentarios
un saludo