比较日期时间后工作不正常

时间:2015-04-07 08:19:38

标签: ruby-on-rails datetime comparison

请看下面的代码 -

#rails default time
2.1.4 :101 > time1 = User.first.created_at
 => Mon, 19 Jan 2015 14:23:49 UTC +00:00 
2.1.4 :102 > time1.class
 => ActiveSupport::TimeWithZone 

#convert time into timestamp
2.1.4 :103 > time1.to_i
 => 1421677429 
2.1.4 :104 > timestamp = User.first.created_at.to_i
 => 1421677429 

#convert same timestamp again into datetime
2.1.4 :106 > DateTime.strptime(timestamp.to_s,'%s')
 => Mon, 19 Jan 2015 14:23:49 +0000 
2.1.4 :107 > DateTime.strptime(timestamp.to_s,'%s').class
 => DateTime 

#Convert time into timezone and comparing the time
2.1.4 :112 > time2 = DateTime.strptime(timestamp.to_s,'%s').in_time_zone
  => Mon, 19 Jan 2015 14:23:49 UTC +00:00 
2.1.4 :118 > time1
 => Mon, 19 Jan 2015 14:23:49 UTC +00:00 
2.1.4 :119 > time2
 => Mon, 19 Jan 2015 14:23:49 UTC +00:00 
2.1.4 :120 > time1.class
 => ActiveSupport::TimeWithZone 
2.1.4 :121 > time2.class
 => ActiveSupport::TimeWithZone 
2.1.4 :122 > time1 == time2
 => false
2.1.4 :124 > time1 > time2
 => true

我只是想知道为什么会发生这种情况?由于时间(time1和time2)属于同一个类并且看起来相同但它们不相等。请分享您的观点并帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

time1time2是浮点数,to_f的输出应显示它们不等于