Metodo para calcular dias transcurridos

Iniciado por Beginner Web, 25 Septiembre 2018, 18:26 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Hola a tod@s, acabo de hacer un metodo para calcular los dias transcurridos desde el 1 de Enero de ese año, teniendo en cuanta que la fecha pasada por parametro esta validada, se que este metodo funciona pero me gustaria saber si hay otras formas mas simples de implementarlo? Me siento tonta :-\
Gracias!!  ;-)
Código (cpp) [Seleccionar]
void calcular_dias(t_fecha n)
{
int dias=0, m[11]={31,28,31,30,31,30,31,31,30,31,30};
switch(n[1]){
case 1: dias+=n[0];break;
case 2: dias+=m[0]+n[0];break;
case 3: dias+=m[0]+m[1]+n[0];break;
case 4: dias+=m[0]+m[1]+m[2]+n[0];break;
case 5: dias+=m[0]+m[1]+m[2]+m[3]+n[0];break;
case 6: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+n[0];break;
case 7: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+n[0];break;
case 8: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+n[0];break;
case 9: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+n[0];break;
case 10: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+n[0];break;
case 11: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+m[9]+n[0];break;
case 12: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+m[9]+m[10]+n[0];break;
}
if(n[2]%4==0 && n[1]>2){
dias++;
}
cout<<"Dias transcurridos desde el 1 de Enero: "<<dias<<endl;
}
7w7

MAFUS

#1
Puedes usar la librería time.h que ya viene preparada para trabajar con fechas y horas. Algo así:


#include <stdio.h>
#include <time.h>

unsigned calcular_dias(struct tm *fecha) {
   double diff;
   struct tm aux = *fecha; // Copio la fecha que me han pasado

   aux.tm_mday = 1; // Cambio a dia 1 del mes
   aux.tm_mon = 0; // Cambio al primer mes del año. Los meses empiezan por 0

   diff = difftime(mktime(fecha), mktime(&aux)); // Calculo los segundos de diferencia entre las dos fechas

   return diff/(60*60*24); // Devuelvo la diferencia en días
}

int main() {
   time_t tiempo;
   struct tm *fecha;

   tiempo = time(NULL); // Consigo la marca de tiempo actual
   fecha = localtime(&tiempo); // Y la paso a la estrutura que la descompone en fecha/hora

   printf("Han pasado %u dias.", calcular_dias(fecha));
}

M4RQUS

#2
Creo que podrias calcular la cantidad de dias utilizando un for que valla desde 0 hasta n


int calcular_dias(int n){
int dias=0;
int m[11] = {31,28,31,30,31,30,31,31,30,31,30};

for(int i = 0; i < n;i++){
dias += m[i];
}

return dias;
}


Algo asi creo yo (Pd: yo tambien estoy comenzando a programar :B)
"Paciencia Virtud de Sabios"
System.out.println("Iniciado pero con ganas de Aprender");

Beginner Web

Gracias MAFUS, aunque no entiendo casi nada de ese codigo , que debiera leer para entenderlo a parte del codigo?  :laugh:
M4RQUS , bueno eso si lo sabia pero se me hace ya mucho codigo colocar un for y tampoco quiero usar una funcion aparte solo para calcular los dias, por ahi lei acerca de un for in mmmmmm  ;-)
7w7

MAFUS


M4RQUS

No es tan complicado usar un for ademas lo podes poner dentro del procedimiento y te acorta mucho el codigo
"Paciencia Virtud de Sabios"
System.out.println("Iniciado pero con ganas de Aprender");