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

Calcular diferencia de Fechas

Estas en el tema de Calcular diferencia de Fechas en el foro de C/C++ en Foros del Web. Hola, necesito ayuda para crear una aplicación que me permitiera calcular la difertencia de dos fechas: dd/mm/aaaa hacia dd/mm/aaaa, tomando en cuenta años bisiestos .. ...
  #1 (permalink)  
Antiguo 17/11/2007, 16:37
Avatar de 1995  
Fecha de Ingreso: febrero-2007
Ubicación: Chile
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Exclamación Calcular diferencia de Fechas

Hola, necesito ayuda para crear una aplicación que me permitiera calcular la difertencia de dos fechas: dd/mm/aaaa hacia dd/mm/aaaa, tomando en cuenta años bisiestos ..

Porfavor agradecería una pronta ayuda.


Gracias
__________________
Incubando Proyectos Web
Generando Comunidad en Comunidad
  #2 (permalink)  
Antiguo 18/11/2007, 01:47
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Calcular diferencia de Fechas

encontre esto en la red, pero no me funciona, si sabes algo me cuentas estoy buscando lo mismo
/************************************************** **************
* *
* Nombre: ABRAHAM GAUSACHS HERNANDEZ, WIDA308 *
* *
* Descripción: Calcula los dias dados entre 2 fechas del s.XXI *
* *
* Data: 12 de Octubre de 2001 *
* *
************************************************** ***************/

/* Este programa calcula la cantidad de dias que hay entre una fecha y otra
de este siglo. Tb comprueba que la fecha introducida sea correcta.
La idea es: coge las dos fechas
comprueba las dos fechas
realiza la diferenci
printa salida

Ejemplo:

El usuario escribe 10 01 01:
10 02 01
Diferencia en dias: 365.

Este programa esta realizado aprovechando las funciones de la libreria de C time.h
como por ejemplo difftime(q calcula la diferencia en segundos) y mktime que usa una
fecha para pasarla a formato time_t. Lo malo de estas funciones es que toman sus valores
a partir del uno de enero de 1970 (?no se porque¿), pero como estamos tratando con el siglo
21 (2000-2099) no hay problema.
*/

/****************************DECLARACIONES********* ************************************/

#include <stdio.h>
#include <time.h>
int bisiesto(int year);
int comprueba(int dia,int mes,int ano);

/********************************MAIN************** ************************************/

void main() {

double dd; //Diferencia entre Dias
int suma; //Resultado de las comprobaciones
struct tm fecha1; //Estructuras de C para las fechas
struct tm fecha2;
time_t data1;
time_t data2;

printf ("Entra una fecha de este siglo (dd mm aa) EJEMPLO: 03 12 01 \n");
scanf ("%d %d %d", &fecha1.tm_mday, &fecha1.tm_mon, &fecha1.tm_year);
printf ("Entra otra fecha de este siglo (dd mm aa) EJEMPLO: 04 11 09 \n");
scanf ("%d %d %d", &fecha2.tm_mday, &fecha2.tm_mon, &fecha2.tm_year);


fecha1.tm_mon = fecha1.tm_mon - 1; //Restamos uno xq los meses son a partir de enero
fecha2.tm_mon = fecha2.tm_mon - 1; //con lo que enero es el mes 0 y diciembre el 11.
fecha1.tm_year = fecha1.tm_year + 100; //Sumamos 100 para tratar con fechas del
fecha2.tm_year = fecha2.tm_year + 100; //siglo XXI.

fecha1.tm_sec = 0; // Tenemos que inicializar las horas de las dos estructuras
fecha1.tm_min = 0; // porque si no funciona.
fecha1.tm_hour = 0;
fecha2.tm_sec = 0;
fecha2.tm_min = 0;
fecha2.tm_hour = 0;


suma = comprueba(fecha1.tm_mday,fecha1.tm_mon,fecha1.tm_y ear);
suma = suma + comprueba(fecha2.tm_mday,fecha2.tm_mon,fecha2.tm_y ear);

if (suma == 2){ // Sera 2 cuando la comprobacion de ambos numeros halla sido correcta.
data1 = mktime(&fecha1); //formateamos las fechas para tratarlas como t_time
data2 = mktime(&fecha2);
dd=difftime(data2, data1);
printf("\nDiferencia en dias entre las dos fechas: %lf\n", dd/(24*60*60));
}
else{
printf("Ha habido un error en las fechas insertadas.\n");
}
}

/****************************FUNCIONES************* *************************************/

//MIRA SI EL ANO ES BISIESTO
int bisiesto(int year)
{
int esbisiesto = 0;
if (year % 400 == 0)
esbisiesto = 1;
else if ( year % 4 == 0 && year % 100 != 0 )
esbisiesto = 1;
return esbisiesto;
}

//MIRA SI LAS FECHAS SON CORRECTAS
int comprueba(int dia,int mes,int ano){
int correcto = 0;

if (ano >= 100 && ano < 200 ){
correcto = 1; //0 no es correcte, 1 si es correcte
}

if (mes > 12 || mes < 0){
correcto = 0;
}

if (mes == 1 && dia == 29){
if (bisiesto(ano+1900) == 0){
correcto = 0;
}else{correcto = 1;}
}
return correcto;
}
  #3 (permalink)  
Antiguo 18/11/2007, 11:47
Avatar de 1995  
Fecha de Ingreso: febrero-2007
Ubicación: Chile
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Calcular diferencia de Fechas

Hola, ese codigo me ha servido.. ptengo que tomat ern cuanta desde el año 1700 en adelante..


Saludos y gracias

esperemos a ver si resulta.


P.d: en un rato mas pego el codigo que he trabajado (pero que no esta listo), ya que todavía tengo unos problemas, por lo que no s puede
__________________
Incubando Proyectos Web
Generando Comunidad en Comunidad
  #4 (permalink)  
Antiguo 23/10/2011, 14:11
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Calcular diferencia de Fechas

Buenas tardes, tengo que subir una tarea al portal de la Universidad antes de las 10:40 PM, con un programa parecido a éste, espero alguien me pueda ayudar.

Tengo que calcular la cantidad de días vividos por una persona, para calcularlo se ingresarán la fecha de nacimiento y fecha actual por el teclado... Lo que no tengo idea es de como realizar una operación entre ambas fechas en formato (dd/mm/aaaa)... Alguien tiene alguna idea?

Muchas gracias..
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




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