2009-06-12 13 views
19

Für den folgenden Code würde ich Ergebnis gleich 2 erwarten, da die MSDN besagt, dass "d" "den Tag des Monats als eine Zahl von 1 bis darstellt 31. Ein einstelliger Tag wird ohne führende Null formatiert. ".Format .NET DateTime "Day" ohne führende Null

DateTime myDate = new DateTime(2009, 6, 4); 
string result = myDate.ToString("d"); 

jedoch Ergebnis ist tatsächlich gleich ‚2009.06.04‘ - und das ist das Kurzdatumsformat (das auch ‚d‘). Ich könnte "dd" verwenden, aber das fügt eine führende Null hinzu, die ich nicht will.

Antwort

38

Um anzugeben, dass dies ein benutzerdefinierter Formatbezeichner ist (im Gegensatz zu einem Standardformatbezeichner), muss er zwei Zeichen lang sein. Dies kann durch Zugabe eines Raumes erreicht werden (was in der Ausgabe angezeigt wird) oder durch ein Prozentzeichen vor dem einzigen Buchstaben einschließlich, wie folgt aus:

string result = myDate.ToString("%d"); 

MSDN

5

Anstatt Zeichenfolge mit Strings Formatierung , wie etwa die Eigenschaft Day

DateTime myDate = new DateTime(2009,6,4) 
int result = myDate.Day; 

verwenden oder wenn Sie wirklich das Ergebnis im String-Format benötigen

string result = myDate.Day.ToString(); 

Wenn Sie nach einem bestimmten Datumsteil aus einem Datumsobjekt und nicht nach einer formatierten Darstellung des Datums suchen, verwende ich lieber die Eigenschaften (Tag, Monat, Jahr, DayOfWeek usw.). Dadurch wird der Code gelesen ein bisschen einfacher (vor allem, wenn jemand anderes es liest/wartet, der die verschiedenen Formatierungscodes nicht gespeichert hat)

+0

Danke, Sie machen einen guten Punkt. Leider musste ich in meinem Fall heute die Formatzeichenfolge in ein Eigenschaftsfenster als Teil eines Berichtslayouts einfügen - also musste ich den% d-Wert verwenden. –