Tempo

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