Last active
December 21, 2015 21:38
-
-
Save aquajach/6369142 to your computer and use it in GitHub Desktop.
Compare date with datetime in activerecord when the default timezone is different from UTC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
irb(main):032:0> user.confirmed_at | |
=> Wed, 05 Jun 2013 00:00:52 HKT +08:00 | |
irb(main):046:0> user.confirmed_at.utc | |
=> 2013-06-04 16:00:52 UTC | |
irb(main):033:0> User.where('confirmed_at > ? and confirmed_at < ?', Date.new(2013,6,4), Date.new(2013,6,5)).include?(user) | |
=> true | |
irb(main):034:0> User.where('confirmed_at > ? and confirmed_at < ?', Date.new(2013,6,5), Date.new(2013,6,6)).include?(user) | |
=> false | |
irb(main):042:0> Date.new(2013,6,4).to_time | |
=> 2013-06-04 00:00:00 +0000 | |
irb(main):043:0> Date.new(2013,6,4).beginning_of_day | |
=> Tue, 04 Jun 2013 00:00:00 HKT +08:00 | |
irb(main):044:0> User.where('confirmed_at > ? and confirmed_at < ?', Date.new(2013,6,4).beginning_of_day, Date.new(2013,6,5).beginning_of_day).include?(user) | |
=> false | |
irb(main):045:0> User.where('confirmed_at > ? and confirmed_at < ?', Date.new(2013,6,5).beginning_of_day, Date.new(2013,6,6).beginning_of_day).include?(user) | |
=> true | |
def beginning_of_day | |
to_time_in_current_zone | |
end | |
def to_time_in_current_zone | |
if ::Time.zone | |
::Time.zone.local(year, month, day) | |
else | |
to_time | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment