2009-06-12 15 views
19

Per il codice seguente, mi aspetto risultato uguale a 2, perché MSDN indica "d" "Rappresenta il giorno del mese come un numero da 1 a 31. Un giorno a una cifra è formattato senza uno zero iniziale. ".Formato .Net DateTime "Giorno" senza zero iniziale

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

Tuttavia, risultato è effettivamente uguale a '6/4/2009' - che è il formato data breve (che è anche 'd'). Potrei usare 'dd', ma questo aggiunge uno zero iniziale, che non voglio.

risposta

38

Per indicare che questo è un identificatore di formato personalizzato (al contrario di un identificatore di formato standard), deve essere lungo due caratteri. Questo può essere ottenuto con l'aggiunta di uno spazio (che apparirà nel documento finale), oppure inserendo un segno di percentuale prima della singola lettera, in questo modo:

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

MSDN

5

Invece di utilizzare la formattazione delle stringhe stringhe , come circa usando la proprietà Giorno

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

O se davvero bisogno il risultato in formato stringa

string result = myDate.Day.ToString(); 

Se si desidera ottenere una data specifica da un oggetto data piuttosto che una rappresentazione formattata della data, preferisco utilizzare le proprietà (Giorno, Mese, Anno, GiornoFuggi, ecc.). Fa leggere il codice un po 'più facile (in particolare se qualcun altro sta leggendo/mantenendo ciò che non ha memorizzato i vari codici di formattazione)

+0

Grazie, si fa un buon punto. Purtroppo nel mio caso oggi avevo bisogno di inserire la stringa di formato in una finestra delle proprietà come parte di un layout del report, quindi ho dovuto usare il valore% d. –