rubino 1.9.3dev (2011-09-23 revisione 33323) [i686-linux]Rails sui valori oggetto Date restituiti da date.end_of_day.to_datetime e date.to_datetime.end_of_day rispetto ritorna falsi
Rotaie 3.0.20
recente perché si lavora su un progetto su RSpecs legati alla DateTime on Rails ho scoperto che in una determinata data i valori emessi dai seguenti dichiarazioni
date.end_of_day.to_datetime
e
date.to_datetime.end_of_day
rispetto restituisce false se rappresentassero identica data-ora.
A conferma di ciò ho aperto Rails console e provato dopo
1.9.3dev :053 > monday = Time.now.monday
=> 2013-02-25 00:00:00 +0530
1.9.3dev :054 > monday.class
=> Time
1.9.3dev :055 > d1 = monday + 1.hour
=> 2013-02-25 01:00:00 +0530
1.9.3dev :056 > d2 = monday + 1.hour
=> 2013-02-25 01:00:00 +0530
1.9.3dev :058 > d1_eod_datetime = d1.end_of_day.to_datetime
=> Mon, 25 Feb 2013 23:59:59 +0530
1.9.3dev :059 > d2_eod_datetime = d2.to_datetime.end_of_day
=> Mon, 25 Feb 2013 23:59:59 +0530
1.9.3dev :061 > d1_eod_datetime == d2_eod_datetime
=> false
1.9.3dev :062 > d3_eod_datetime = d2.to_datetime.end_of_day
=> Mon, 25 Feb 2013 23:59:59 +0530
1.9.3dev :063 > d2_eod_datetime == d3_eod_datetime
=> true
e sembra mia osservazione sembra correct.That è:
Quando d1_eod_datetime e d2_eod_datetime sono confrontati è restituisce false
Quando d2_eod_datetime e d3_eod_datetime sono compa rossi IT rendimenti veri
Sembra un comportamento incoerente per me, però saremmo grati se qualcuno può farmi capire cosa sta succedendo dietro le quinte e il motivo per cui le confronti effettuati sui valori utilizzando date.end_of_day. to_datetime e data.to_datetime.end_of_day non riesce anche se la data data oggetto rappresenta la data identica.
Grazie,
Jignesh
Vedere la domanda correlata: http://stackoverflow.com/questions/8763050/how-to-compare-time-in-ruby – kristinalim