//  Returnerer antall dager mellom
int Timer::forskjellDatoer(int t1, int t2)  {  //  to datoer ('t1' og 't2'):
  int d1, d2, m1, m2, a1, a2, tot1, tot2, i; // Masse ulike hjelpevariable:

  konverter(t1, d1, m1, a1);                 //  Konverterer 't1/t2' over i 
  konverter(t2, d2, m2, a2);                 //   'd1/d2', 'm1/m2' og 'a1/a2':
  tot1 = dagnummer(d1, m1, a1);              //  Finner deres dagnummer i 
  tot2 = dagnummer(d2, m2, a2);              //   hvert sitt �r ('a1/a2').
  for (i = 1900;  i < a1;  i++)              //  Finner TOTALT antall dager
	  tot1 += (skuddaar(i)) ? 366 : 365;     //   siden �r 1900 for hvert av
  for (i = 1900;  i < a2;  i++)              //   de to datoene:
	  tot2 += (skuddaar(i)) ? 366 : 365;     
  return ((tot2 > tot1) ? tot2-tot1 : tot1-tot2);  //  Returnerer forskjellen.
}
Beispiel #2
0
                                 // Returnerer datoen ETTER 't', på samme form:
int Timer::nestedato(int t)  {
  int d, m, a;
  
  konverter(t, d, m, a);           //  Konverterer 't' over i 'd', 'm' og 'a'.
  dager_pr_maaned[1] = (skuddaar(a))  ?  29 : 28;   //  Fyller feb. aktuelt år.
  d++;                                              //  dag++
  if (d > dager_pr_maaned[m-1])  {  m++;  d = 1;  } //  Ny måned: mnd++  dag=1
  if (m > 12)                    {  a++;  m = 1;  } //  Nytt år:  aar++  mnd=1
  return (a*10000) + (m*100) + d;  //  Regner ut/omgjør og returnerer.
}
Beispiel #3
0
                                //  Format (inn):  ÅÅÅÅMMDD
int Timer::ukedagsnr(int t)  {  //  Retur: 0=Søndag, 1=Mandag, 2=Tirsdag, ....
  int d, m, a;                  //         6=Lørdag, 99=mislykkes!

  time(&tid);                   //  Avleser systemklokka og konverterer.
  tidspunkt = localtime(&tid);  //  Gjort KUN for å få fylt 'tidspunkt'     
                                //     med noe !!!
  konverter(t, d, m, a);        //  Konverterer 't' over i 'd', 'm' og 'a'.

  tidspunkt->tm_mday = d;       //  Fyller 'tidspunkt' med de nye utregnede
  tidspunkt->tm_mon  = m-1;     //    verdiene:
  tidspunkt->tm_year = a-1900;
                                //  'mktime' fyller 'tidspunkt's andre felter.
                                //  Evt. returneres -1 omcasted til 'time_t'.
  if (mktime(tidspunkt) != (time_t)-1)  //  Lykkes/suksess:
     return tidspunkt->tm_wday; //  Henter og returnerer ukedagsnr (0-6).
  else           //  Utenfor intervallet: 1/1-1970  -  18/1-2038 kl.19:14:07 :
     return 99;                 //  Returnerer feilverdien '99'.
}
Beispiel #4
0
                              //  Finner en datos (på formen ÅÅÅÅMMDD)
                              //    dagnummer i året og returnerer dette:
int Timer::dagnummer(int t)  {   
  int d, m, a;
  konverter(t, d, m, a);        //  Konverterer 't' over i 'd', 'm' og 'a'.
  return (dagnummer(d, m, a));  //  Bruker den overloadede skjulte funksjonen.
}