öffnen Tags

öffnen Kategorien

Vom WebReader vorlesen lassen

Wochentag berechnen

16. Feb 2010, 14:47

Ich stand gerade vor dem Problem zu einem gegebenen Datum den passenden Wochentag zu finden. Hier gibt's die Lösung für alle die das selbe Problem haben und sich nicht lange mit gregorianischen oder julianischen Kalenderspezifikationen aufhalten wollen.

Bei mir ging es im speziellen um C++, und hier ist der Code:

1
2
3
4
5
6
7
8
9
10
11
12
int date::getWeekDay (int d, int m, int y)
{
if (m <= 2)
{
m += 12;
y--;
}
//gregorianischer Kalender
if (y >= 1582) return (d + 2 * m + (3 * m + 3) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
//julianischer Kalender
else return (d + 2 * m + (3 * m + 3) / 5 + y + y / 4 - 1) % 7;
}

Das ganze liefert den zum Datum gehörenden Wochentag von 0 (Sonntag) bis 6 (Samstag).
Die Fallunterscheidung um das Jahr 1582 hängt mit einer Kalenderreform zusammen. Wer mehr darüber erfahren möchte möge bitte die Suchmaschine seines Vertrauens bemühen!

Als kleines Feature bekommt ihr noch zwei Arrays to Copy&Paste:

1
2
const char *date::dShortNames[7] = {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
const char *date::dNames[7] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};

Tags: C++ Software

Kategorien: Software

© 2009-2017 by Martin Scharm