"Christian B. Andresen" wrote:
> > > Er der nogen der ligger inde med en Ansi-C algoritme der kan beregne og
> > > retunere ugedagen for en hvilken som helst dato fra fx. 1990 og frem ?
> > > Lidt ala WEEKDAY("28/10/2002") i Excel.
> > Prøv at kigge på mktime() fra time.h
> > Den vil fylde ugedagen ud hvis man giver den dag, måned og år i den struct
> > den tager som input.
> Hvor finder jeg time.h ?
Hmm.. time.h er en del af Ansi-C, så det er bare at lave #include <time.h>.. Med
hensyn til dokumentation, kan du bruge
http://msdn.microsoft.com hvis der ikke er
noget med din compiler.
mktime() bruges noglelunde som følger:
int GetWeekDay(int day, int month, int year)
{
struct tm time_s;
memset(&time_s, 0, sizeof(time_s));
time_s.tm_mday = day;
time_s.tm_mon = month - 1;
time_s.tm_year = year - 1900;
if (mktime(&time_s) == (time_t)-1)
return -1;
else
return time_s.tm_wday;
}
<day> skal være 1-31, <month> 1-12 og <year> er året f.eks. 2002
mktime() virker i intevallet 1/1/1970 - 19/1/2038
GetWeekDay() returnere -1 hvis mktime() fejlede ellers 0-6 (0 = søndag)
Hvis <day>, <month> eller <year> er uden for intervallet bliver de
"normaliseret". F.eks. den 32/11/2002 bliver lavet om til 1/12/2002 inden
ugedagen udregnes.
Har du brug for en mere generel algoritme, kan man også beregne det manuelt.
Det er ikke så svært -- det værste er at beregne om det er skud-år eller ej.