Ruby on rails ruby时区转换问题
我有一个场景,其中我得到一个时间戳,我需要在该时间戳中搜索该日期的所有预订。时间戳位于用户各自的时区中,数据库中的所有记录都存储在UTC中。因此,我自然需要将时间戳转换回UTC,然后进行搜索 以下是我正在做的事情:Ruby on rails ruby时区转换问题,ruby-on-rails,ruby,timezone,rails-activerecord,activesupport,Ruby On Rails,Ruby,Timezone,Rails Activerecord,Activesupport,我有一个场景,其中我得到一个时间戳,我需要在该时间戳中搜索该日期的所有预订。时间戳位于用户各自的时区中,数据库中的所有记录都存储在UTC中。因此,我自然需要将时间戳转换回UTC,然后进行搜索 以下是我正在做的事情: Booking.where("date_time >= '#{DateTime.parse(timestamp).in_time_zone('UTC').beginning_of_day}' and date_time <= '#{DateTime.parse(times
Booking.where("date_time >= '#{DateTime.parse(timestamp).in_time_zone('UTC').beginning_of_day}' and date_time <= '#{DateTime.parse(timestamp).in_time_zone('UTC').end_of_day}'")
Booking.where(“date\u time>=”{DateTime.parse(timestamp.)。在时区(“UTC”)。开始日期日期日期时间=”{DateTime.parse(timestamp)。开始日期日期日期。在时区(“UTC”)和日期时间我不会使用任何一个
这个:
DateTime.parse(timestamp).in_time_zone('UTC').beginning_of_day
DateTime.parse(timestamp).beginning_of_day.in_time_zone('UTC')
提供UTC日的开始时间,而不是UTC的本地时区日偏移的开始时间。简而言之,它是不正确的,不会提供您要查找的内容
这个:
DateTime.parse(timestamp).in_time_zone('UTC').beginning_of_day
DateTime.parse(timestamp).beginning_of_day.in_time_zone('UTC')
是正确的,因为它将时间更改为本地时区中一天的开始,然后将时间戳转换为UTC
如果让ActiveRecord使用占位符处理报价,则它将应用UTC调整本身
我也会使用
而不是t.start\u of u day,
:end=>t.明天.一天的开始
)