2013-03-28 10 views
5

Próbuję użyć formatowania ciągów na obiekcie DateTime w języku C#, aby uzyskać dzień miesiąca bez zer wiodących.Format ciągu dla uzyskania dnia miesiąca bez początkowego zera

Po poszukiwaniach znalazłem some documentation for DateTime formats, co pokazuje, że powinienem być w stanie zadzwonić:

dateTime.ToString("d"); 

uzyskać wartość jestem po, jednak gdy próbowałem go, zamiast otrzymania numeru jak 28 , produkcja wyniosła: 3/28/2013.

Po dalszych poszukiwaniach znalazłem dokumentację dla Standard Date and Time String Formats.

Oba zestawy formatów korzystają z formatu "d", ale wynika z niego, że standardowy format ciągu ma pierwszeństwo przed niestandardowym formatem ciągu.

Czy istnieje sposób określenia, jakie formatowanie jest pożądane?

Dla spójności kodu wolałbym napisać:

a = dateTime.ToString(...some format...); 
b = dateTime.ToString(...some format...); 

zamiast

a = dateTime.ToString(...some format...); 
b = dateTime.Day.ToString(); 

Odpowiedz

10

pojedynczego znaku rozumie się być Standard Date and Time Format String, w tym przypadku „short datę wzór” .

trzeba poprzedzić pojedynczego znaku format niestandardowy ciąg z % za to należy interpretować jako zwyczaju jednego:

dateTime.ToString("%d"); 

Jest to opisane na stronie, którą związane, pod Using Single Custom Format Specifiers (który opisuje % specyfikator formatu niestandardowego).

+1

+1 To wyjaśnia, dlaczego jeśli dodać spację po 'd' otrzymasz oczekiwany wynik. – Steve

0

Można dokonać metoda ToString użyć formatu jako własnego formatu zamiast standardowego formatu ciąg dodając pusty dosłowne w formacie:

dateTime.ToString("''d") 
+1

Ładne obejście - użycie pustego literału wewnętrznego. Nadal wolę udokumentowane '%' do tego. – Oded

+0

@Oded: Uwaga: To * jest * udokumentowane, tylko nie dla tego konkretnego zastosowania. I wolę to od '' d ''lub' "d" 'również proponowanych w dokumentacji ... :) – Guffa

Powiązane problemy