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() { 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; // 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