Formattazione delle date
In .NET un dato di tipo DateTime viene immagazzinato attraverso un valore di tipo Long (intero a 64 bit con segno), che rappresenta il numero di intervalli di tempo di 100 nanosecondi intercorsi dalle ore 0.00 del 1 gennaio 0001.
Ad esempio, se d è un dato di tipo DateTime, possiamo assegnare il valore numerico alla variabile l utilizzando la proprietà Ticks di DateTime:
Dim l As Long = d.Ticks
Ad esempio, alla data 15/06/2007 14.40.08 corrisponde il numero 633175152080000000.
La rappresentazione di una data, invece, dipende dalla culture utilizzata e dalla formattazione scelta.
Quando si deve formattare una data in .NET può essere utile avere sottomano la seguente tabella.
Formati predefiniti
Il nome del formato può essere utilizzato così come scritto come argomento per la funzione Format (le alternative nella stessa cella sono equivalenti) ed il risultato dipende dalla Culture del Sistema (o del Thread)
| Nome formato |
Descrizione |
Esempio it-IT |
Esempio en-US |
General Date G |
Generico (data e ora) |
15/06/2007 14.40.08 |
6/15/2007 2:40:08 PM |
Long Date Medium Date D |
Long (data) |
venerdì 15 giugno 2007 |
Friday, June 15, 2007 |
Short Date d |
Short (data) |
15/06/2007 |
6/15/2007 |
|
Long Time Medium Time T |
Long (ora) |
14.40.08 |
2:40:08 PM |
Short Time t |
Short (ora) |
14.40 |
2:40 PM |
| f |
data Long e ora Short |
venerdì 15 giugno 2007 14.40 |
Friday, June 15, 2007 2:40 PM |
| F |
data Long e ora Long |
venerdì 15 giugno 2007 14.40.08 |
Friday, June 15, 2007 2:40:08 PM |
| g |
data Short e ora Short |
15/06/2007 14.40 |
6/15/2007 2:40 PM |
M m |
mese e giorno |
15 giugno |
June 15 |
R r |
data e ora formato GMT |
Fri, 15 Jun 2007 14:40:08 GMT |
Fri, 15 Jun 2007 14:40:08 GMT |
| s |
data e ora (indice ordinabile) |
2007-06-15T14:40:08 |
2007-06-15T14:40:08 |
| u |
date e ora formato GMT (indice ordinabile) |
2007-06-15 14:40:08Z |
2007-06-15 14:40:08Z |
| U |
data GMT Long e ora GMT Long |
venerdì 15 giugno 2007 12.40.08 |
Friday, June 15, 2007 12:40:08 PM |
Y y |
mese e anno |
giugno 2007 |
June, 2007 |
In alcuni casi è tuttavia necessario visualizzare la data in un formato personalizzato non presente tra quelli predefiniti.
Formati personalizzati
Per creare un formato personalizzato per una data o un'ora, possiamo usare dei caratteri speciali nella stringa di formattazione.
| Carattere |
Significato |
|
: |
Indica il separatore per l'ora. In output il separatore utilizzato sarà legato alla Culture del Thread. Ad esempio per it-IT si avrà ".", per en-US si avrà ":". |
| / |
Indica il separatore per la data. In output il separatore utilizzato sarà legato alla Culture del Thread. |
| % |
Indica che il carattere seguente deve essere inteso come un formato personalizzato di una sola lettera (e le eventuali lettere seguenti considerate a parte). Serve ad evitare ambiguità. Ad esempio: "d" viene interpretato come il formato predefinito Short Date e visualizza "15/06/2007", mentre "%d" come numero del giorno nel mese (vedi dopo) e visualizza "15". |
Alcune lettere, invece, hanno un significato particolare in una stringa di formattazione.
Ad esempio: d indica il numero del giorno nel mese (da 1 a 31), dd la stessa cosa, ma preceduto da uno 0 quando il giorno va da 1 a 9 (da 01 a 31), ecc.
Per un elenco completo si può vedere qui.
Il processo inverso si ha quando si vuole convertire una stringa in una data. In tal caso si possono utilizzare diversi metodi di DateTime. Tra questi ce n'è uno nuovo, ossia presente dalla versione 2.0 del Framework .NET, molto comodo.
Si tratta del metodo TryParse, a cui passare la stringa e il riferimento alla variabile dove sarà immagazzinato il risultato, che restituisce un valore di tipo Boolean. Nel caso in cui la conversione non riesca, il metodo restituirà False, senza generare un'eccezione. Se tutto va bene sarà restituito True.
Technorati Tags:
.net,
asp.net,
vb.net
View blog reactions