2012-10-20 16 views
5

Heute ist 21.10.2012. und es ist Sonntag.
Aber mein VB.NET denkt anders:Vb.net bekommen Wochentag Name

Debug.Print("Weekday for the date '21.10.2012.'is " & WeekdayName(Weekday("21.10.2012."))) 
Debug.Print("Weekday for the date '21/10/2012'is " & WeekdayName(Weekday("21/10/2012"))) 
Debug.Print("Weekday for the date '" & DateTime.Now.Date & "'is " & WeekdayName(Weekday(DateTime.Now.Date))) 

Alle diese drei Prüfungen zu mir: 'Montag' für Wochentag!
Was ist zu tun, um korrekte Wochentagsnamen zu erhalten?

+0

Ich weiß, das ist alt, aber dachte, ich würde erklären, warum dies nicht funktioniert. Der Wochentag gibt eine ganze Zahl zurück, die den Wochentag angibt, beginnend mit 1 = Sonntag. WeekdayName Funktionen startet die Woche als Montag = 1. Deshalb ist es nicht synchron und gibt den Namen des falschen Tages zurück. – Aki

Antwort

8

Dies ist die richtige .NET Weg, um den Wochentag eines bestimmten Datum zu erhalten:

Dim myCulture As System.Globalization.CultureInfo = Globalization.CultureInfo.CurrentCulture 
Dim dayOfWeek As DayOfWeek = myCulture.Calendar.GetDayOfWeek(Date.Today) 
' dayOfWeek.ToString() would return "Sunday" but it's an enum value, 
' the correct dayname can be retrieved via DateTimeFormat. 
' Following returns "Sonntag" for me since i'm in germany ' 
Dim dayName As String = myCulture.DateTimeFormat.GetDayName(dayOfWeek) 
+0

Danke Tim, das funktioniert. In meiner Frage bekomme ich auch lokalen Namen für Tag, also frage ich mich jetzt in welcher Kultur 21.10.2012. ist Montag? :) –

+0

@ user973238: Ich bin mir nicht sicher, ob es vielleicht, Sie sollten eine echte Frage zu SO fragen, klingt interessant. –

0
Label1.Text = Date.Today.ToString("dddd") 
+1

Dies bezieht sich nicht auf die eigentliche Frage des Fragestellers. –

Verwandte Themen