Foros del Web » Programación para mayores de 30 ;) » C/C++ »

diferencia de fechas en años, meses y días en c++

Estas en el tema de diferencia de fechas en años, meses y días en c++ en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/03/2010, 11:34
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
diferencia de fechas en años, meses y días en c++

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
  1. #include <iostream>
  2. #include <time.h>
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6.  
  7. int main()
  8. {
  9.   time_t now = time(0);        // fecha actal
  10.  
  11.   struct tm time_str;             // asigno de una vez valores para el 14 de sep de 1986
  12.    
  13.     time_str.tm_year = 1986-1900;
  14.     time_str.tm_mon = 9-1;
  15.     time_str.tm_mday = 14;
  16.     time_str.tm_hour = 0;
  17.     time_str.tm_min = 0;
  18.     time_str.tm_sec = 0;
  19.     time_str.tm_isdst = -1;
  20.  
  21.   time_t nacido = mktime(&time_str);
  22.   double diferencia = difftime(now, nacido);
  23.  
  24.   // Hasta aqui tengo la diferencia en segundos, luego la "convierto" en fecha.
  25.  
  26.   time_t difer = diferencia;
  27.   time_t* pRta = &difer;
  28.   char* rta = ctime(pRta);
  29.    
  30.   cout << "\n\ndiferencia :D -> " << rta;    // me regresa julio 16 de 1993
  31.  return 0;
  32. }

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
  #2 (permalink)  
Antiguo 29/03/2010, 13:44
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: diferencia de fechas en años, meses y días en c++

Si tienes la diferencia medida en segundos aplica alguna operacion matematica para obtener los años, meses, dias que esos segundos representan.
  #3 (permalink)  
Antiguo 29/03/2010, 14:08
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: diferencia de fechas en años, meses y días en c++

CalgaryCorpus gracias por la respuesta, pues preguntaba si habia algo, una funcion ya hecha para no darme en la tarea casi artesanal de encontrar eso.

Ok en todo caso veo que me va tocar hacer esa parte a mano manito..

gracias
ciao
  #4 (permalink)  
Antiguo 29/03/2010, 14:17
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: diferencia de fechas en años, meses y días en c++

bueno, si divido la diferencia en segundos, entre 3600*24 me daría el numero de días, pero para obtener el numero de meses, no puedo dividir entre 30, porque no todos los meses tienen 30 días...

Opiniones.... mm..
  #5 (permalink)  
Antiguo 29/03/2010, 14:57
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: diferencia de fechas en años, meses y días en c++

Cada 365 dias hay 12 meses

Etiquetas: diferencia, fechas, meses
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:41.