• Sábado 14 de Diciembre de 2024, 22:56

Autor Tema:  Semana Del Año  (Leído 819 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Semana Del Año
« en: Jueves 22 de Noviembre de 2007, 10:50 »
0
Buenas:

estoy desarrollando una funcion para calcular la actual semana del año.

alguien sabe como hacer el algoritmo?

La idea es que dandole un TM o time_t pueda dar la semana del mes en el que estamos, la cosa se complica con los años bisiestos y todo eso, sabeis donde puede estar la formula?

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Semana Del Año
« Respuesta #1 en: Jueves 22 de Noviembre de 2007, 11:37 »
0
Bueno, al final lo saqué, lo dejo aqui por si alguien lo necesita  :hola:

Código: Text
  1.  
  2. int GetYearWeek()
  3. {
  4.   time_t to,tf;
  5.   tm * Fecha,*Fecha1;
  6.   unsigned int Week;
  7.     tf=time(0);   //fecha actual
  8.     Fecha=gmtime(&tf);
  9.     Fecha1=gmtime(&tf);
  10.  
  11.     Fecha1->tm_hour=0;
  12.     Fecha1->tm_min=0;
  13.     Fecha1->tm_sec=0;
  14.  
  15.     Fecha1->tm_mon=0;
  16.     Fecha1->tm_mday=1;
  17.     Fecha1->tm_yday=0;
  18.  
  19.     to=mktime(Fecha); //dia 1 de enero de este año
  20.     to-=Fecha1->tm_wday*24*60*60; //ajustamos el t segun el dia que sea el 1
  21.  
  22.     Fecha1=gmtime(&to);
  23.  
  24.     tf-=to; //segundos desde la semana del 1
  25.     tf/=3600; //horas desde semana del 1
  26.     tf/=24;    //dias desde semana del 1
  27.     if (Fecha->tm_year%4==0) tf++; //es bisiesto?
  28.     tf/=7;  //semanas
  29.     Week= (unsigned int)tf+1; //ajusto de 0 -> 1
  30.     return Week;
  31. }
  32.  
  33.