martedì 16 dicembre 2014

Ora e data

Vediamo oggi come lavorare con ora e data. Cominciamo dai formati disponibili:
  • short date: 12/16/14  (viene messo prima il mese, poi il giorno, poi l'anno; come in USA)
  • abbreviated date: Tue, Dec 16, 2014
  • long date: Tuesday, December 16, 20140
  • short time: 11:56 AM   (AM è del mattino, PM è del pomeriggio)
  • abbreviated time: 11:56 AM
  • long time: 12:03:35 PM
  • internet date:  Tue, 16 Dec 2014 12:03:57 +0100
  • seconds:  1418727859  (sarebbe il numero di secondi a partire dal 1 Gennaio 1970)
  • dateItems:  2014,12,16,0,0,0,3 (questo lo spiego più sotto)
  • system date: 16/12/2014  (questo dipende dal computer, In Italia prima il giorno, poi il mese e poi l'anno)
Per fare calcoli con le ore o le date si può passare attraverso seconds o attraverso dateItems.
Usare seconds è la vecchia e scomoda tecnica che usano anche altri linguaggi, cioè si trasforma l'ora o la data in secondi a partire dal 1 Gennaio 1970 e si aggiungono i secondi, si aggiungono o sottraggono i secondi e poi si riconverte il tutto. Ad esempio per aggiungere 3 ore e 5 minuti all'ora corrente il codice è:


put the time into temp #temp ora vale "1:58 PM"
convert temp to seconds #temp ora vale 1418734680   
add (3*60*60 + 5*60 ) to temp #aggiungiamo 3 ore e 5 minuti
convert temp to time #temp ora vale "5:03 PM"
answer temp   


Come vedete è complicato e poco chiaro, perchè bisogna moltiplicare ore, minuti, giorni, mesi e anni per i numeri opportuni in modo da trasformali in secondi.
Per fortuna c'è un modo più semplice, usare dateItems. Il formato dateItems è composto da una serie di valori separato da virgole secondo questo ordine:
  1. anno
  2. mese
  3. giorno
  4. ora
  5. minuti
  6. secondi
  7. giorno della settimana (un numero da 1, domenica, a 7, sabato)
Quindi se vogliamo aggiungere 3 ore e 5 minuti all'ora corrente basta scrivere:


put the time into temp #temp ora vale "1:58 PM"
convert temp to dateitems #temp ora vale "2014,12,16,13,58,0,3"
add 3 to item 4 of temp #aggiungiamo 3 ore
add 5 to item 5 of temp #aggiungiamo 5 minuti
convert temp to time #temp ora vale "5:03 PM"
answer temp   


Lo stesso identico discorso lo potete fare con giorni, mesi e anni. Potete aggiungere o sottrarre valori senza problemi convert si occupa di ricalcolare tutto in maniera corretta.