Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 17-nov-2007, 15:37   #1 (permalink)
1995 no se puede cailificar en este momento
 
Avatar de 1995
 
Fecha de Ingreso: febrero-2007
Ubicación: Temuco, Chile
Mensajes: 54
Enviar un mensaje por MSN a 1995
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
1995 está desconectado   Responder Citando
Antiguo 18-nov-2007, 00:47   #2 (permalink)
jsalazarsanabria ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
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;
}
jsalazarsanabria está desconectado   Responder Citando
Antiguo 18-nov-2007, 10:47   #3 (permalink)
1995 no se puede cailificar en este momento
 
Avatar de 1995
 
Fecha de Ingreso: febrero-2007
Ubicación: Temuco, Chile
Mensajes: 54
Enviar un mensaje por MSN a 1995
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
1995 está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 1,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:40.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93