2009-04-24 20 views
8

Ich erlebe ein seltsames Verhalten von C#. Seine soetwas wie dieses ..DateTime Format in C#

var date = DateTime.Now.ToString("MM/dd/yyyy"); 

erwartete ich

04/24/2009 

sein, aber in actuall seine

04-24-2009 

und mein OS Kultur ist en-GB Rückkehr, ich bin mit .Net 3.5 und WPF

alle Lösungen bitte ... ???

+0

Haben Sie den Code durchgegangen und eine "QuickWatch" auf diesem DateTime.Now.ToString() abgeschlossen? – Tacoman667

+0

Wenn Sie "en-GB" verwenden, sollten Sie ein Datumsformat von "TT/MM/JJJJ" verwenden. Für US-Datumsformate von "MM/TT/JJJJ" sollten Sie "en-US" verwenden. – JeeBee

Antwort

18

Nach der MSDN-Dokumentation für benutzerdefinierte Datums- und Uhrzeitformat-Strings, / ist ein Platzhalter:

Stellt das Datumstrenn im aktuellen DateTimeFormatInfo.DateSeparator Eigenschaft definiert. Dieser Separator wird verwendet um Jahre, Monate und Tage zu unterscheiden.

Wenn Sie einen bestimmten slash möchten, verwenden Sie "MM '/' dd '/' yyyy":

DateTime.Now.ToString("MM'/'dd'/'yyyy") 
3

Es verwendet das Trennzeichen, das in den regionalen Einstellungen eingerichtet wurde, da "/" das Ersatzzeichen für das Trennzeichen ist.

Sie können Ihre eigene DateTimeFormat-Instanz mit verschiedenen Trennzeichen erstellen.

2

Versuchen ToString am Tag, die sich selbst und das Bestehen der CultureInfo.InvariantCulture Objekt:

string date = yourDate.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture));