Skip to content

Instantly share code, notes, and snippets.

@aquajach
Last active December 21, 2015 21:38
Show Gist options
  • Save aquajach/6369142 to your computer and use it in GitHub Desktop.
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
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