Buon giorno a tutti, ho un piccolo problema, dovuto alla mia
inesperienza, nella gestione delle ore e minuti. In un applicativo ho un
evento che si compie in 4 tempi definiti come t1, t2, t3 e t4 tutti
formattati in HH:MM.
Il problema è fare la differenza tra t1 e t4, tra t2 e t3. I risultati
devono apparire in due distinte celle (perdonatemi il termine) e
formattati nuovamente in HH:MM.
Il problema si complica perchè l’evento può verificarsi al cavallo della
mezzanotte.
Se non ho capito male, devo trasformare tutto in minuti (che poi
memorizzo nel db) , fare la differenza e riformattare il tutto. Avete
qualche esempio da mostrarmi.
Grazie a tutti
Stefano
Stefano F. wrote:
Buon giorno a tutti, ho un piccolo problema, dovuto alla mia
inesperienza, nella gestione delle ore e minuti. In un applicativo ho un
evento che si compie in 4 tempi definiti come t1, t2, t3 e t4 tutti
formattati in HH:MM.
Il problema è fare la differenza tra t1 e t4, tra t2 e t3. I risultati
devono apparire in due distinte celle (perdonatemi il termine) e
formattati nuovamente in HH:MM.
Il problema si complica perchè l’evento può verificarsi al cavallo della
mezzanotte.
Se non ho capito male, devo trasformare tutto in minuti (che poi
memorizzo nel db) , fare la differenza e riformattare il tutto. Avete
qualche esempio da mostrarmi.
Grazie a tutti
Stefano
Dai un occhio qui
https://rubyforge.org/projects/duration/
On Jan 29, 2008 12:39 PM, Stefano F. [email protected] wrote:
memorizzo nel db) , fare la differenza e riformattare il tutto. Avete
qualche esempio da mostrarmi.
Il segreto è trasformare tutte le date nel “numero di secondi a partire da
una data convenzionale”, che nel mondo Unix è sempre il 1970/1/1 a
mezzanotte. Dopodiché, tutta l’aritmetica sulle date si riduce a semplice
aritmetica su interi.
Per esempio:
$ irb
irb(main):001:0> Time.new.to_i
=> 1201613758
irb(main):002:0> Time.at(1300000000)
=> Sun Mar 13 08:06:40 +0100 2011
irb(main):003:0>
Manca qualche informazione.
Parli di database e di visualizzazione in celle, ma non specifichi il
tipo dei dati.
Se i tempi li mantieni in oggetti Time, non devi preoccuparti del
passaggio della mezzanotte, altrimenti (se li mantieni come stringhe
“HH:MM”) si.
Comunque, dati due Time, t1 e t2, puoi calcolare la loro differenza in
secondi semplicemente sottraendoli.
secs = t2 - t1
e visualizzarli in “HH:MM”:
puts “%02u:%02u” % [(secs / 3600).to_i, ((secs / 60) % 60).to_i]
Registra i tempi come unix timestamp poi fai le differenze e ottieni i
secondi intercorsi tra un tempo e l’altro. Poi con qualche ti crei
qualche funzione per ottenere una stringa tipo HH:MM:SS se ti serve…
Spero di aver capito il problema.
Ciao
Claudio Petasecca D. wrote:
Manca qualche informazione.
Parli di database e di visualizzazione in celle, ma non specifichi il
tipo dei dati.
Se i tempi li mantieni in oggetti Time, non devi preoccuparti del
passaggio della mezzanotte, altrimenti (se li mantieni come stringhe
“HH:MM”) si.
Comunque, dati due Time, t1 e t2, puoi calcolare la loro differenza in
secondi semplicemente sottraendoli.
secs = t2 - t1
e visualizzarli in “HH:MM”:
puts “%02u:%02u” % [(secs / 3600).to_i, ((secs / 60) % 60).to_i]
… forse ho capito.
Devo trasformare tutto in secondi.
Per spiegare meglio, nella mia form ho 4 campi chiamati t1, t2, t3, t4,
dove inserisco manualmente l’evento ad esempio 12:54, 12:58, 22:16,
22:22 e altri due campi toff e tla.
toff è uguale a t1-t4 e formattato in hh:mm (non può superare mai le 12
ore)e tla è uguale a t2-t4 e la stessa formattazione hh:mm.
Un esempio tipico potrebbe essere l’orario di lavoro di un dipendente.
Intanto grazie per le rapide risposte.
Ciao
Stefano