Mit diesem Snippet wird aus einem Datum der Wochentag berechnet. Es werden Schaltjahre berücksichtigt.
Hinweis:
Natürlich kann man Datentypen, Variablen usw. ändern. Das hier ist nur ein grober Entwurf.
Beispiel-Aufruf:
string wochentag = getwochentag("15.01.2011")
Viel Spaß damit
private string getwochentag(string datum)
{
string[] felder = datum.Split(new char[] { '.' });
int tag = Convert.ToInt32(felder[0]);
int monat = Convert.ToInt32(felder[1]);
string wochentag = "";
int chkschaltjahr = monat;
int tagesziffer = tag % 7;
switch (monat)
{
case 1:
monat = 0;
break;
case 2:
monat = 3;
break;
case 3:
monat = 3;
break;
case 4:
monat = 6;
break;
case 5:
monat = 1;
break;
case 6:
monat = 4;
break;
case 7:
monat = 6;
break;
case 8:
monat = 2;
break;
case 9:
monat = 5;
break;
case 10:
monat = 0;
break;
case 11:
monat = 3;
break;
case 12:
monat = 5;
break;
}
int jahr = Convert.ToInt32(felder[2].Remove(0, 2));
int jahresziffer = (jahr + (jahr / 4)) % 7;
int jahrzehnt = Convert.ToInt32(felder[2].Remove(2, 2));
int zs2 = jahrzehnt % 4;
int zs3 = 3 - zs2;
int jahrhundert = zs3 * 2;
int wochenziffer = (jahrhundert + jahresziffer + monat + tagesziffer) % 7;
if (chkschaltjahr == 1 || chkschaltjahr == 2)
{
switch (wochenziffer)
{
case 1:
wochentag = "Sonntag";
break;
case 2:
wochentag = "Montag";
break;
case 3:
wochentag = "Dienstag";
break;
case 4:
wochentag = "Mittwoch";
break;
case 5:
wochentag = "Donnerstag";
break;
case 6:
wochentag = "Freitag";
break;
case 0:
wochentag = "Samstag";
break;
}
}
else
{
switch (wochenziffer)
{
case 0:
wochentag = "Sonntag";
break;
case 1:
wochentag = "Montag";
break;
case 2:
wochentag = "Dienstag";
break;
case 3:
wochentag = "Mittwoch";
break;
case 4:
wochentag = "Donnerstag";
break;
case 5:
wochentag = "Freitag";
break;
case 6:
wochentag = "Samstag";
break;
}
}
return wochentag;
}
4 Kommentare zum Snippet