Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 478
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Aus Datum Wochentag ermitteln


Autor: Dominic
Sprache: C#
Bewertung:
2.54 (3 votes)
Anzahl der Aufrufe: 5349
  
Kick it on dotnet-kicks.de  

Beschreibung:

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


Abgelegt unter: wochentag, datum, datetime, schaltjahr, zeit.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 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;
        }
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Christian Glowinski schrieb am:  15.01.2011 16:06:09

Eine sehr lange Implementierung, aber interessant zu sehen.
Wer es kürzer braucht nutzt und Microsoft vertraut kann dies hier nutzen (Statt Now kann man jedes Datumsobjekt einsetzen!):
string.Format("{0:dddd}",DateTime.Now);

Quelle: http://dotnet-snippets.de/dns/aktuellen-wochentag-ermitteln-SID101.aspx
Das Parsen eines Datums aus einem String funktioniert mit
DateTime.parse(string)

Quelle: http://msdn.microsoft.com/en-us/library/2h3syy57.aspx

Trotzdem ein nützliches Snippet, wenn man an diesem Vorgang irgendwas speziell anpassen muss.
Christopher Kk schrieb am:  16.01.2011 15:39:49

Warum so kompliziert?
Das DateTime Objekt liefert doch schon alles was du brauchst.

DateTime dt = new DateTime(2011, 1, 15);

Console.WriteLine(dt.DayOfWeek);
Holger von Terpitz schrieb am:  21.02.2011 20:55:25

Gratulation (!) - noch umständlicher kann man das kaum machen.
Christopher Kk schrieb am:  23.02.2011 13:21:25

Holger, was sollen die unqualifizierten Kommentare? Es wurde doch bereits gesagt das es anders geht oder hast du noch andere Anregungen, dann raus damit. Wenn nicht, dann lass den Unsinn einfach.


Diese Snippets könnten für Sie interessant sein:
[C#] aktuellen Wochentag ermitteln
[C#] Anzahl der Wochentage zwischen zwei Daten ermitteln
[C#] Datumsformatierung mit ToString
[C#] Datum in Unix-Timestamp wandeln
[C#] Unix Timestamp in Datum wandeln
[C#] Datum in das RFC822 Format umwandeln
[C#] Atomuhr-Datum von einem NIST-Server abfragen
[C#] Kalenderwoche berechnen
[C#] Den ersten und den letzten Tag eines Quartals berechnen
[C#] Ostersonntag und Ostermontag ermitteln
[C#] Datum und Zeit als String
[VB.NET] Zufälliges Datum erzeugen
[C#] Zufälliges Datum erzeugen
[C#] Datum des nächsten Quartalsendes
[C#] zeigt den letzten Tag eines Monates an
[C#] Anzahl der Monate zwischen 2 DateTime-Objekten (Extension)
[C#] Setzen der Systemzeit
[C#] DateTime in besser lesbaren String umwandeln
[C#] Formatierte Uhrzeiten für die Zeitauswahl erzeugen.
[C#] DateTime Extensions liefern TimeStamp
[C#] ersten und letzten Tag im Monat berechnen
[C#] Alter anhand des Geburtstages ermitteln.
[C#] yyyymmdd - String in DateTime wandeln
[C#] DateTime in yyyymmdd - String wandeln
[C#] Datum vor genau einem Monat ermitteln
[C#] Sternzeichen bestimmen
[C#] ersten und letzten Tag der Woche berechnen
[C#] Herausfinden, ob ein Jahr ein Schaltjahr ist
[C#] DateTime Runden
[VB.NET] Prüfen ob ein Jahr ein Schaltjahr ist
[VB.NET] Sekunden in hh:mm:ss umwandeln
[C#] deltaT
[C#] Zeit einer Funktion/Prozedur messen
[C#] Benutzereingaben blockieren [Übersetzung]
[C#] Astronomie Bibliothek (Sonnenaufgang, Mondphasen)
[C#] Zeitdifferenz berechnen
[C#] MethodStopwatch - timemeasuring class for methods

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.