Für alle, die schon immer wissen wollten, wann der ominöse erste zweite Mittwoch im Monat ist, an dem der Dimitri-Stammtisch stattfindet, hier der Quelltext in C:
/* TABSIZE 4
* @(#)stammtisch.c
*
* 1996-10-17 von Rainer Seitel @ KA
*/
#include <stdio.h>
#include <time.h>
#define Stammtisch_der_MAUS_KA() \
printf("Stammtisch der MAUS KA ist am %d-%02d-%02d.\n", Jahr, Monat, Tag)
#define FALSE 0
#define TRUE 1
/*
* Berechnet den letzten Tag eines Monats.
*/
short letzter_Tag( short Jahr, short Monat )
{
switch (Monat) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
return ((Jahr % 100) != 0 && (Jahr % 4) == 0 || (Jahr % 400) == 0) ? 29 : 28;
}
}
/*
* Testet ob ein Mittwoch vom 8. bis 14. Tag eines Monats vorliegt.
*/
short erster_zweiter_Mittwoch( short Jahr, short Monat, short Tag )
{
if (Tag < 8 || Tag > 14)
return FALSE;
{
struct tm ortszeit;
time_t utc;
int wochentag;
ortszeit.tm_year = Jahr - 1900;
ortszeit.tm_mon = Monat - 1 ;
ortszeit.tm_mday = Tag;
ortszeit.tm_hour = ortszeit.tm_min = ortszeit.tm_sec = 0;
utc = mktime(&ortszeit);
return (localtime(&utc)->tm_wday == 3);
}
}
int main()
{
int Jahr, Monat, Tag;
for (Jahr = 1991, Monat = 10; ; Jahr++, Monat = 1)
for (; Monat <= 12; Monat++)
for (Tag = 1; Tag <= letzter_Tag(Jahr, Monat); Tag++)
if (erster_zweiter_Mittwoch(Jahr, Monat, Tag) == TRUE)
Stammtisch_der_MAUS_KA();
}
Langfristig funktionierender Alias: http://rainer.seitel.home.pages.de/maus_ka_stammtischterminberechnungsprogramm.c.html
1997-08-29 Rainer Seitel