Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Date formatting in C#

Date formatting in C#
Data: 18/09/2005
Categoria: C#
Codice d'esempio


La tecnica detta "Date formatting" è quella tecnica che permette di effettuare un controllo sulla formattazione di una data in formato stringa. Il framework rappresenta le date con il tipo di dato DateTime; questo tipo di dato implementa l'interfaccia IFormattable che gli permette di essere appunto formattato in una stringa, attraverso uno degli overload del metodo ToString(), potendo scegliere tra vari tipi di formati.
Il formato scelto va definito passando al metodo ToString() una stringa di testo contenente il pattern corrispondente.
Ecco lelenco di tutti i pattern disponibili (prendendo come data il 18/09/2005 15:00):

PatternDescrizioneEsempio
dShort date18/09/2005
DLong dateSettembre 18, 2005
tShort time15:00 PM
TLong time15:00:00 PM
fFull date & timeSettembre 18, 2005 15:00 PM
FFull date & time (long)Settembre 18, 2005 15:00:00 PM
gDefault date & time18/09/2005 15:00 PM
DDefault date and time (long)18/09/2005 15:00:00 PM
MMonth daySettembre 18
rRFC1123 dateDom, 18 Set 2005 15:00:00 GMT
sSortable date2005-09-18T15:00:00
uUniversal sortable, local time2005-09-18 15:00:00Z
UUniversal sortableSettembre 18, 2005 15:00:00 PM
YYear MonthSettembre, 2005
ddDay number18
dddDay short nameDom
ddddFull day nameDomenica
ggEraD.C.
hhHour (2 digits)3
HHHour (24h format)15
mmMinute00
MMMonth number09
MMMMonth short nameSet
ssSeconds00
ttAM or PMPM
yyYear (2 digits)05
yyyyYear2005
zzTimezone offset (2 digits)-01
zzzFull timezone offset-01:00

Quindi, se per esempio volessimo stampare a video la data di oggi, ci basterebbe fare:

Console.Writeline(DateTime.Now.ToString("d"));

Nota: è bene ricordare che i valori della data e dellora dipendono dai settaggi di sistema.

Per comodità ho creato una classe sealed (chiamate DateFormatter) che permette di fare questo tipo di formattazione in maniera più comoda, senza doverci ricordare ogni volta il pattern utile ai nostri scopi; questa classe espone un metodo statico chiamato Format, che prende come parametri di input un oggetto di tipo DateTime rappresentante la data che vogliamo formattare, e un elemento di dell'enumeration DateFormatType, creata appunto per evitare di dover tenere a mente tutti i pattern, sia standard che custom, per la formattazione delle date.
Ecco quindi come lutilizzo della classe DateFormatter, può aiutare e velocizzare la scrittura del codice di noi programmatori:

Console.Writeline(DateFormatter.Format(DateTime.Now, DateFormatType.DefaultDateTime));


Link:
Standard DateTime Format Strings
Custom DateTime Format Strings
Interfaccia IFormattable
DateTime structure