by Hannes Preishuber25. Juli 2012 22:19Windows 8 ist fast fertig. Es sind nur mehr ganz wenige Tage bis zur RTM. Und doch liefert Windows 8 eine seltsame Zeit bzw. Formatierung wenn man Date.Now einer Textbox zuweist.

Dabei sind die Setting im Betriebsystem auf Deutsch eingestellt.

Der WinRT datetime Typ besitzt keine Culture Informationen und kann das deswegen auch nach Projektion auf .NET DateTime nicht umsetzen.
Bei DateTimeOffset wird daraus Windows.Foundation.DateTime und da fehlt selbst die Zeitzone.
Folgenden Code kann man als Workaround betrachten um die Region manuell zu setzen.
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de-DE"
textblock1.Text = Date.Now.ToString("d")

Jedenfalls anders als man das aus .NET kennt (Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US"))
Man kann auch die aktuellen Einstellungen auslesen mit Windows.Globalization.DateTimeFormatting.DateTimeFormatter.ShortDate

Wie letztendlich formatiert wird, geben die Region Einstellungen vor, Mit diesem untypischen Format sieht das ShortDate dann auch so aus

Ähnliche Probleme gibt es auch bei System.Uri und Windows.Uri da die Typen nicht ident sind.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.

c6e0c53b-b329-43e9-b731-15727b67fe0d|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags:
.Net | WinRT | Windows