2017-06-29 5 views
2

Ich muss auf die gleiche Weise wie Windows-Ländereinstellungen formatieren. Hier ist, was ich bisher getan:Kombinieren Sie Datum und Uhrzeit von DateTimeOffset

var strDate = string.Format("{0} {1}", 
        myDateTimeOffset.ToLocalTime().ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern), 
        myDateTimeOffset.ToLocalTime().ToString(CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern)); 

Gibt es einen kürzeren Weg, dies zu tun?

Antwort

2

Noch kürzer:

var strDate = string.Format("{0:d} {0:T}", myDateTimeOffset.ToLocalTime()); 
+0

guter Punkt! Vergiss es, es so zu machen. –

1

Wenn Sie das Kontrollkästchen „Standard Date and Time Format Strings“ können Sie den gleichen Effekt, indem Sie "d" und "T"

var strDate = string.Format("{0} {1}", 
        myDateTimeOffset.ToLocalTime().ToString("d"), 
        myDateTimeOffset.ToLocalTime().ToString("T")); 

Unter Verwendung dieser zwei Strings erhalten sehen die kulturspezifische kurze Datum und lange Zeit formatiert Werte zurückgeben.

+0

Sie meinen, 'd' und 'T'. Wird 'ToLocalTime()' sicherstellen, 'currentCulture' zu ​​greifen? – Mhd

+2

Das '.ToLocalTime()' gibt ein 'DateTime'-Objekt zurück, für das überhaupt keine Kultur vorhanden ist. Die Sache, die die Kultur ergreift, ist die ['ToString (string)' -Funktion] (http://referencesource.microsoft.com/#mscorlib/system/datetime.cs5088b43558351160) und diese Funktion wird 'DateTimeFormatInfo.CurrentInfo' verwenden verwendet intern 'Thread.CurrentThread.CurrentCulture' ([' CultureInfo.CurrentCulture' gibt auch den Wert für 'Thread.CurrentThread.CurrentCulture' zurück] (http://referencesource.microsoft.com/#mscorlib/system/globalization/cultureinfo.cs , 1f5907384ac6bb55)) –

Verwandte Themen