Laden...

[erledigt] DateTime - Feststellen ob Wochenende?

Erstellt von norman_timo vor 17 Jahren Letzter Beitrag vor 17 Jahren 7.622 Views
norman_timo Themenstarter:in
4.506 Beiträge seit 2004
vor 17 Jahren
[erledigt] DateTime - Feststellen ob Wochenende?

Hallo liebes Forum,

kann man irgendwie anhand eines DateTime fetstellen, ob das Datum ein Wochenende ist?

Hintergrund:
Es ist nicht in jedem Land auf der Welt so definiert, dass Samstag und Sonntag Wochenende bedeutet. In Arabischen Ländern (hab ich mir sagen lassen), wäre es z.B. Donnerstag und Freitag (oder wars Fr und Sa 🤔 ).

Am Besten wäre es natürlich wenn man über die eingestellte CultureInfo diese Information bekommen könnte...

Für Klärendes wäre ich sehr dankbar.

Gruß
Norman-Timo

Edit: Smilie hat mit der Klammer nicht gewollt

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

F
107 Beiträge seit 2006
vor 17 Jahren

Zum festellen ob Wochenende ist, hätte ich das spontan so gemacht:



if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday
                || DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
            {
                // :) Wochenende
            }
            else
            { 
                // :( Arbeit
            }

Aber ich glaub nicht, dass du über CultureInfo Informationen bekommst wann in der jeweiligen Kultur Wochende ist, das kannst du nur den Kalender umstellen.

mfg FLo

norman_timo Themenstarter:in
4.506 Beiträge seit 2004
vor 17 Jahren

Hallo Flo80,

in allen Umsetzungen von Kalendern, die ich je gesehen habe ist das genau so implementiert, dass eine Abfrage auf Sa und So gemacht wird.

Nun ja, dann werde ich meinen Kalender so weit aufbohren, dass man es konfigurieren kann. Schade dass da Microsoft doch nicht so weltoffen war, und dies bedacht hat 😉

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

J
3.331 Beiträge seit 2006
vor 17 Jahren

Seit wann ist Amerika in der EDV weltoffen? 7-bit-ASCII kannte grundsätzlich keinerlei Umlaute; 8-bit-ASCII berücksichtigte gerade einmal das halbe Europa, aber noch nicht einmal den NATO-Partner Türkei und erst recht nicht Osteuropa. Was erwartest Du? Jürgen

norman_timo Themenstarter:in
4.506 Beiträge seit 2004
vor 17 Jahren

Hallo juetho,

deshalb auch mein Zwinker-Smilie 😉

Microsoft ist leider überhaupt nicht offen. Mich wundert nur die "Wandlung" mit .NET, das einigermaßen offen ist (zumindest im Verhältnis zur vorigen Microsoft Politik).

Aber das ist ein anderes Thema...

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

B
1.529 Beiträge seit 2006
vor 17 Jahren

In Ländern mit jüdischem Hintergrund ist der Sabbat der "siebente Tag" aus der Genesis. Dieser beginnt Freitag bei Sonnenuntergang und geht bis Sonnabend Sonnenuntergang. In arabischen (islamischen) Ländern ist das ähnlich (ich gaube, bloß einen Tag früher)

In Ländern mit christlichem Hintergrund ist Sonntag der Tag der Auferstehung Jesu (Ostersonntag) und damit der Beginn der "neuen Ordnung". Dieser ersetzte quasi den Sabbat. Man beachte, dass der Samstag eigentlich ein regulärer Arbeitstag ist.

Nur der Vermischung von jüdischer / christlicher Kultur in den USA (und deren Überschwappen nach Europa) verdanken wir es, dass Samstag (jüdischer 7. Tag, Sabbat) und Sonntag (Auferstehung Jesu) zusammen als Wochenende bezeichnet werden und wir daher (seit ca. 20/30 Jahren) praktisch nur fünf Wochentage haben.
Der Samstag bleibt aber weiterhin Wochen- und Arbeitstag.

In anderen Religionen (Buddhismus, Hinduismus etc.) ist das Konzept des Ruhetages unbekannt. Dort gibt es also kein eigentliches Wochenende, sondern nur dass vom Westen erzwungene.

Insofern ist die Entscheidung Microsofts, die religiöse Komponente der Ruhetage nicht in das Framework zu integrieren, durchaus nachvollziehbar.

Wann jetzt Wochenende ist, kann oftmals gar nicht so sicher bestimmt werden.
In Deutschland ist gesetzlich nur der Sonntag Wochenende, praktisch jedoch auch der Samstag. Was sollte man jetzt ins Framework aufnehmen?

S
8.746 Beiträge seit 2005
vor 17 Jahren

Interessanterweise harmoniert der Begriff Wochenende zwingend nicht mit dem Begriff Wochenbeginn. In den USA beginnt z.B. die Woche am Sonntag. Wenn aber das Ende einer Woche -logischerweise - vor dem Beginn einer neuen Woche liegt, dann kann der Sonntag in den USA kein Wochenende sein, es sei denn der Wochenbegriff ist in den USA jüdisch inspiriert (das ist wohl wirklich der Fall, erstaunlich angesichts der vielen Christen....). 😉

Aufpassen: In .NET ist auch Sonntag der 1. (bzw. nullte) Tag der Woche. Leider ist das auch nicht lokalisiert. Schande über MS!

http://www.answers.com/topic/days-of-the-week

B
1.529 Beiträge seit 2006
vor 17 Jahren

Aus der christlichen Tradition heraus ist der Sonntag ja auch der Beginn einer neuen Woche, so wie die Auferstehung Jesu der Beginn eines neuen Zeitalters war.
In der jüdisch/islamischen Tradition wird aber eine Beziehung zum siebenten Tag der Schöpfungsgeschichte hergestellt, der logischerweise am Ende der Woche liegen muss.
Die Woche beginnt bei beiden mit Sonntag.

Der Begriff Wochenende, den es im Deutschen gar nicht gab, kommt vom englischen Weekend, was als Bezeichnung für den auf der Insel im 19. Jhd eingeführten freien Samstagnachmittag benutzt wurde. Und da Sonntag der Wochenanfang ist, ist Samstagnachmittag logischerweise Wochenende...

Allein die letzten Beiträge sollten bereits deutlich machen, warum Microsoft die Finger vom Wochenende gelassen hat und nur die Wochentage definiert.

EDIT: Bis vor 30 Jahren war auch in Deutschland der Sonntag Wochenanfang. Das änderte sich erst als:

Der Montag ist seit dem 1. Januar 1976 als Wochenbeginn genormt (EN28601, ISO 8601 und DIN 1355).

Ansonsten: Siehe auch http://de.wikipedia.org/wiki/Wochenende

D
386 Beiträge seit 2007
vor 17 Jahren

Da ich lustigerweise in einem Unternehmen mit Hauptsitz in Tel Aviv arbeite:
Mir egal ob Microsoft religioese Komponenten mag oder nicht, aber jedes Unternehmen das ich in Israel kenne hat Freitag und Samstag dicht. Sonntag ist Arbeitstag.
Bei der taeglichen Routine gibt es aber nun wirklich weit stoerendere Dinge..

Pound for pound, plutonium is about as toxic as caffeine when eaten.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von Borg
Allein die letzten Beiträge sollten bereits deutlich machen, warum Microsoft die Finger vom Wochenende gelassen hat und nur die Wochentage definiert.

Naja. Finger von lassen hätte bedeutet, keine DayOfWeek()-Funktion anzubieten. So haben sie einfach US-Standard implementiert, anstelle von ISO. Ich bleib dabei: SCHANDE!

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich verstehe jetzt aber nicht, was der Wochentag mit dem Wochenende zu tun hat?

Im Gregorianischen Kalender werden sieben Wochentage, welche natürlich in jeder Sprache ihren eigenen Namen tragen, und ihre Reihenfolge definiert.
Dieser Gregorianischen Kalender wird international als der Standardkalender verwendet. Zusätzlich hat man festgelegt, dass im Gregorianischen Kalender der 1.1. der Beginn eines neuen Jahres ist.
Damit kann man jedem Tag weltweit eindeutig einen Wochentag zuordnen.

Der Kalender kann doch nichts dafür, wenn jetzt ein Staat festlegt, dass beispielsweise jeder Dienstag und Donnerstag frei sein soll. Das ändert weder etwas an den Wochentagen noch am sonstigen Kalender. Höchstens auf dem Druckwerk Kalender würde Dienstage und Donnerstage dann halt rot gedruckt werden...

Wie ich oben schon schrieb, war bis vor ca. 30 Jahren der Wochenbeginn der Sonntag. Dies war selbstverständlich auch beim Programmieren so, und deshalb kommt es, dass in eigentlich jedem Wochentags-Enum der Sontag der erste Tag ist (Index 0) und Samstag der letzte (Index 6). Daran haben sich auch die Microsoft-Programmierer bei der Implementation des DayOfWeek-Enum gehalten.
Mit welchem Tag die Aufzählung beginnt, ist aber völlig egal, wichtig ist nur die Reihenfolge der Tage. Prinzipiell könnte ich auch bei Mittwoch anfangen. Auf jeden Fall liefert mit ( Wert + 1 ) % 7 immer den Wochentag von morgen.

Unabhängig davon, wann jetzt lokal die Woche beginnt oder endet oder wann frei ist.