Perché non è Time.current
uguale al suo equivalente analizzato?Perché questi due tempi sono diversi?
current = Time.current
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
parsed = Time.zone.parse('16 Sep 2015 17:10:56')
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
current == parsed
# false <= What ?!
current.to_i == parsed.to_i
# true
Ticket.create(datetime: current)
# ...
Ticket.find_by_datetime(parsed)
# nil <= Why ?!
realtà sto avendo problemi con questo in un'applicazione Ruby on Rails, dove cerco di trovare un record in base a un attributo datetime che è stato analizzato, come indicato sulle ultime righe.
Davvero non capisco. I fusi orari sono gli stessi, i tempi sono uguali a pochi secondi. Cosa sta succedendo qui?
Inoltre, come devo procedere per trovare un record basato su un tempo di riferimento analizzato?
L'orologio del computer ha probabilmente una precisione inferiore al secondo ;-) (suggerimento: 'to_f') – Stefan
Grazie! Ok, quindi il tempo di elaborazione analizzato non ha precisione al secondo. Ma allora cosa dovrei fare per recuperare il record nel database? –
O troncare l'attributo a interi secondi prima di salvarlo nel database o passare un intervallo che copre l'intero secondo: 'Ticket.where (datetime: analizzato ... analizzato + 1)' – Stefan