Uno dei più grandi difetti dell’obsoleto VBScript è la gestione delle date. Il buco più grosso è che la creazione di una data è affidata alla funzione CDate, che accetta un oggetto di tipo Date.
Questo oggetto accetta vari formati di data, compreso quello con il mese in formato verboso (vedi sintassi). Il problema è che se noi gli diamo in pasto una data in formato numerico tipo "12/12/2008" lui riconosce la posizione del mese in base al settaggio del formato locale del server: TERRRRRRRRRRRRRRRIBBBBBBBBBBBBBBBBBILE!!!
Come ovviare? Dopo aver imprecato qualsiasi entità superiore buona o cattiva ho trovato una soluzione blasfemica, ma funziona: usiamo il verbose mode.
Creiamo un array per valorizzare il mese:
Dim elencoMesi(12)
elencoMesi(0) = "January"
elencoMesi(1) = "February"
elencoMesi(2) = "March"
elencoMesi(3) = "April"
elencoMesi(4) = "May"
elencoMesi(5) = "June"
elencoMesi(6) = "July"
elencoMesi(7) = "August"
elencoMesi(8) = "September"
elencoMesi(9) = "October"
elencoMesi(10) = "November"
elencoMesi(11) = "December"
Quindi creiamo una stringa di data e tempo in formato para verboso:
tmpDateReg2S = elencoMesi(MM-1) & " " & DD & ", " & YYYY & " " & HH & ":" & NN & ":" & SS)
E il gioco è fatto. Avete altre soluzioni più decenti voi?
ps.: NN sono i minuti!
Ciao, io uso una funzione che mi crea un intero che mi rappresenta la data nel formato aaaammgg (Es.: 20081209).
Poi tramite un’altra funzione formatto nel formato necessario (09/12/2008, Martedì 09 Dic 2008, ecc).
In questo modo sono indipendente dalle impostazioni del server e posso anche effettuare operazioni tra date.
Un saluto
Ottima strada anche quella certamente. Lo si può fare anche come stringa, basta mantenere il leading zero a due cifre.
Certo che è triste dovere arrivare a queste soluzioni.
Ogni giorno che suo vbscript diventa sempre più doloroso nel mio cuore il ricordo di coldfusion!!!