martedì 5 maggio 2015

Espressioni regolari e le date

I formati delle date possono essere sempre fonte di problemi, non c'è un vero standard, ogni programma le scrive secondo le proprie convenzioni. Un modo per ottenere tutti gli elementi che ci servono per riscrivere le date come preferiamo è utilizzare matchText. Grazie ad esso e la conoscenza delle espressioni regolari possiamo estrarre tutte le informazioni di una data con una sola riga di codice!
Prendiamo ad esempio il formato di data di Apache server:

10/Oct/2000:13:55:36 -0700

Abbiamo la data l'ora e il fuso orario tutto diviso da  barre (/) due punti (:) e un segno (- in questo caso). Senza impazzirci possiamo scrivere:

put matchText(ladata,"(.*?)/(.*?)/(.*?):(.*?):(.*?):(.*?) (.*?)$",tGiorno,tMese,tAnno,tOra,tMinuti,tSecondi,tFusoOrario) into errore

in questo modo abbiamo inserito tutti i dati in variabili separate e abbiamo anche la variabile errore in caso di problemi. Per l'esattezza abbiamo:
  • tGiorno: il giorno del mese
  • tMese: il mese (in questo caso Oct)
  • tAnno: l'anno
  • tOra: l'ora
  • tMinuti: i minuti
  • tSecondi: i secondi
  • tFusoOrario: il fuso orario col segno (+ o - a seconda se in avanti o indietro)
Questo è solo un esempio, ma si può adattare agevolmente a qualunque caso