2009-06-12 9 views
19

Dla następującego kodu, oczekiwałbym, że wynik równa się 2, ponieważ MSDN stwierdza, że ​​"d" "Reprezentuje dzień miesiąca jako liczbę od 1 do 31. Dzień jednocyfrowy jest sformatowany bez początkowego zera. ".Format .NET DataTime "Dzień" bez wiodącego zera

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

Jednak wynik jest faktycznie równe „6/4/2009” - który jest formatem krótki termin (który jest również „d”). Mógłbym użyć "dd", ale to dodaje wiodące zero, którego nie chcę.

Odpowiedz

38

Aby wskazać, że jest to specyfikator formatu niestandardowego (w przeciwieństwie do standardowego specyfikatora formatu), musi mieć dwa znaki. Można to osiągnąć przez wprowadzenie spacji (które pojawią się na wyjściu), albo przez włączenie procent znak przed pojedynczą literę, tak:

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

MSDN

5

Zamiast używać znaków formatowania ciągów jak na temat korzystania z właściwości Day

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

Lub jeśli naprawdę potrzebny wynik w formacie ciągu

string result = myDate.Day.ToString(); 

Jeśli chcesz uzyskać określoną datę z obiektu daty, a nie sformatowaną reprezentację daty, wolę używać właściwości (dzień, miesiąc, rok, dzień tygodnia, itd.) Czytanie kodu nieco łatwiejsze (szczególnie jeśli ktoś inny czyta/zachowuje to, co nie ma zapamiętanych różnych kodów formatowania)

+0

Dzięki, robisz dobry punkt. Niestety w moim przypadku dzisiaj musiałem umieścić ciąg formatu w arkuszu właściwości jako część układu raportu - więc musiałem użyć wartości% d. –

Powiązane problemy