Dec 4

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!

Nov 21

Fare lo split di una stringa significa estrarre i valori da un testo che sono delimitati in base a un carattere. Molti linguaggi di programmazione hanno la funzione split() oppure il metodo split() nell’oggetto stringa. Solitamente il risultato ottenuto dal suo uso è un Array con gli elementi trovati.

Se ho una stringa così "mario-gigi-lucio-filippo" e procedo con uno split sul carattere "-", ottengo i singoli nomi.

Oggi mi sono reso conto che uno dei report di Google Webmaster Tools esporta le date in formato americano. Il mio excel italiano non approva e le vede come testi: ho necessità di gestire la colonna come data.

Cosa fare? Dobbiamo fare lo split dei valori. La data "9/15/2008" deve diventare 15 settembre 2008. Per farlo usiamo un comando di Excel (non una funzione)  "Testo in colonne", che divide in base alle regole che sceglierete voi, il tipo di dato in più celle.

Non vi resta che concatenare le stringhe ottenute nella forma più congeniale, oppure dare i dati in paso a una funzione come DATA(anno;mese;giorno). Se poi volete rimuovere le colonne di supporto, potete copiare tutti i dati e incollarli come valori con "incolla speciale…".

Apr 2

Non chiedetemi per quale motivo sto programmando in ASP / VBScript… Ho visto una cosa orrenda e vorrei condividerla con voi, anche se ultimamente (k76 a parte) pare proprio che mi abbiate abbandonato.

Se io faccio un codice vbscript di questo tipo:

<% response.Write("5-28-2008 16:16:25 " & isDate(#5-28-2008 16:16:25#)) & "<br />"%>
<% response.Write("28-5-2008 16:16:25 " & isDate(#28-5-2008 16:16:25#)) & "<br />"%>

Il risultato assolutamente allarmante è che il sig. ASP da VERO a entrambe le espressioni! Arghhhhhhhhhh!