Gestire la data nel formato ISO 8601 - Script ASP
Chiunque si sia cimentato con l'interazione Database - Linguaggio di programmazione avrà dovuto scontrarsi con l'ostico problema di gestione dei formati data.
Il problema principale è che uno stesso linguaggio ed un'istruzione apparentemente identica si comporta in modo differente a seconda del database e del formato sessione che è stato impostato.
Ad esempio gli inglesi utilizzano un formato data mm/dd/yyyy mentre il formato italiano è dd/mm/yyyy .
Di norma, gli applicativi ed i server se non istruiti diversamente utilizzeranno un formato inglese invertendo il mese con il giorno.
Un altro problema tuttavia si presenta nel formato italiano dove, anche forzando l'uso di dd/mm/yyyy può accadere che nelle date dove il giorno risulta minore del mese questi vengano scambiati.
Ad esempio una data tipo 11/06/2004 che in formato italiano equivale al 11 giugno potrebbe venire erroneamente interpretata come 06 novembre in formato inglese.
Si è quindi dovuto definire un formato standard per l'uso delle date che è di supporto nativo per tutti i database web oriented di medio alto livello.
Il formato ISO 8601 Date Format prevede una sintassi standard del tipo yyyy/mm/dd hh:mm:ss dove il carattere / può essere sostituito in modo indifferente con il carattere -, in genere a seconda delle specifiche del formato linguistico.
Gli americani tendono ad usare lo / mentre gli europei il -.
Per gestire con ASP le date in tale formato facilmente interpretabile correttamente da tutti i database è sufficiente appoggiarci alle funzioni [F]Year()[/F], [F]Month()[/F], [F]Day()[/F], [F]Hour()[/F], [F]Minute()[/F] e [F]Second()[/F] per tagliare la data a piacimento e ricomporla come si desidera.
L'esempio seguente è una funzione usata per trasformare una variabile in formato data generico al formato ISO 8601 per prepararla ad un inserimento o ad una interazione con un database.
<% public function formatDateTimeDb(dtmDateValue, dtmTimeValue) formatDateTimeDb = Year(dtmDateValue) &_ "/" & Month(dtmDateValue) &_ "/" & Day(dtmDateValue) &_ " " & dtmTimeValue end function %>
La funzione accetta come parametri una data ed un'ora e restituisce una variabile nel formato data ISO.
Un esempio di utilizzo passando data ed ora attuale:
<% dtmDataCorretta = formatDateTimeDb(Now(), Time()) Response.Write(dtmDataCorretta) %>

