004
28.05.2004, 16:25 Uhr
~AS
Gast
|
Hallo,
wenn ich es richtig verstanden habe, geht es darum zu einem gegebenen Datum den Wochentag zu ermitteln und nicht den aktuellen Wochentag.
Ich hatte mal ein ähnliches Problem, bei dem sich der Wochentag sozusagen nebenher berechnet hat.
Hier Teile des damaligen Codes für Win3x. Müsste aber so auch mit höheren Versionen funktionieren.
Code: |
long lDiffDay; int iWdJ11,iWdAktuell; int iYear,iMonth,iDay; char *pcD; int iKw=0; struct tm sJ11, sAktuell; // pcDate = TT.MM.JJ iDay=atoi(pcDate); pcD=pcDate+3; iMonth=atoi(pcD); pcD=pcDate+6; iYear=atoi(pcD); if(iYear<70) iYear+=100; // 1970 bis 2069 // sj11 wird benötigt, um den Wochentag für den ersten Januar des geforderten Jahres zu ermitteln.
sJ11.tm_sec=0; sJ11.tm_min=0; sJ11.tm_hour=12; sJ11.tm_mday=1; sJ11.tm_mon=0; /* Jan.=0 ... Dez.=11) */ sJ11.tm_year=iYear; sAktuell.tm_sec=0; sAktuell.tm_min=0; sAktuell.tm_hour=12; sAktuell.tm_mday=iDay; sAktuell.tm_mon=iMonth-1; /* Jan.=0 ... Dez.=11) */ sAktuell.tm_year=iYear; if(mktime(&sJ11)<(time_t)0) return(0); /* Datum < 1.1.1970 oder > 5.2.2036 */ if(mktime(&sAktuell)<(time_t)0) return(0); /* Datum < 1.1.1970 oder > 5.2.2036 */ iWdJ11 = sJ11.tm_wday; /* Son=0 ... Sa=6 */ iWdAktuell = sAktuell.tm_wday; /* Son=0 ... Sa=6 */ lDiffDay=sAktuell.tm_yday; /* Tage seit 1.1. */
|
Ich hoffe das damit geholfen werden kann.
mfg AS |