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):
| Pattern | Descrizione | Esempio | | d | Short date | 18/09/2005 | | D | Long date | Settembre 18, 2005 | | t | Short time | 15:00 PM | | T | Long time | 15:00:00 PM | | f | Full date & time | Settembre 18, 2005 15:00 PM | | F | Full date & time (long) | Settembre 18, 2005 15:00:00 PM | | g | Default date & time | 18/09/2005 15:00 PM | | D | Default date and time (long) | 18/09/2005 15:00:00 PM | | M | Month day | Settembre 18 | | r | RFC1123 date | Dom, 18 Set 2005 15:00:00 GMT | | s | Sortable date | 2005-09-18T15:00:00 | | u | Universal sortable, local time | 2005-09-18 15:00:00Z | | U | Universal sortable | Settembre 18, 2005 15:00:00 PM | | Y | Year Month | Settembre, 2005 | | dd | Day number | 18 | | ddd | Day short name | Dom | | dddd | Full day name | Domenica | | gg | Era | D.C. | | hh | Hour (2 digits) | 3 | | HH | Hour (24h format) | 15 | | mm | Minute | 00 | | MM | Month number | 09 | | MMM | Month short name | Set | | ss | Seconds | 00 |
tt | AM or PM | PM | | yy | Year (2 digits) | 05 | | yyyy | Year | 2005 | | zz | Timezone offset (2 digits) | -01 | | zzz | Full 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));
La documentazione dellenumeration DateFormatType la potete trovare qui.
Link:
Standard DateTime Format Strings
Custom DateTime Format Strings
Interfaccia IFormattable
DateTime structure
|
|
|