// 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. }
// 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. }
// 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'. }
// 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. }