Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

Format di un DateTime

Quando si “stampa” una data bisogna fare attenzione al formato che si utilizza.
Ad esempio io faccio ampio uso del formato italiano tramite il seguente codice:

Dim dateAsString As String = Now.ToString("dd/MM/yyyy")

Purtroppo quel codice non fa esattamente quello che mi aspetto.
Infatti il carattere / ha un significato, ovvero è il separatore di sistema usato per le date. Ovvero, se nei miei settings regionali di sistema la data è scritta ad esempio così yyyy-MM-dd, allora quel ToString di cui sopra produce dd-MM-yyyy, ovvero mette il giorno, poi il mese, poi l’anno come ho specificato, ma li separa con il separatore di sistema, e non con il caratettere /.

Sono certo che tutti lo sapevano benissimo e che io sono uno dei pochi ingenui che invece non lo sapeva, ma per quegli altri pochi come me lo voglio segnalare, in modo da evitare questo errore in futuro.

Il codice corretto è il seguente:

Dim dateAsString As String = Now.ToString("dd\/MM\/yyyy")

In pratica si deve usare il carattere di escape per far mantenere il nostro /.

Lo stesso discorso vale per il ToString di un Time, in cui il carattere : viene sostituito con quello di sistema, e quindi si deve scrivere:

Dim timeAsString As String = Now.ToString("hh\:mm\:ss")

In generale le stringhe andrebbero messe fra apice o doppio apice, ad esempio:

Dim dateAsString As String = Now.ToString("dd""/""MM""/""yyyy")

Trovate tutti i dettagli a questo link.

 

PS:
La proprietà CustomFormat del DateTimePicker non segue questa politica, ma funziona con un meccanismo a metà, ovvero la data la posso scrivere così “dd/MM/yyyy - HH:mm” o anche così “dd/MM/yyyy’ - ‘HH:mm”, ma non così “dd\/MM\/yyyy”… insomma \ e : non sono caratteri speciali, l’escape (\) non esiste, le stringhe possono o meno andare fra apice (‘).
Non voglio indagare oltre… :(

Print | posted on giovedì 22 aprile 2010 13:32 | Filed Under [ Tips .Net ]

Powered by:
Powered By Subtext Powered By ASP.NET