Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby时区转换问题_Ruby On Rails_Ruby_Timezone_Rails Activerecord_Activesupport - Fatal编程技术网

Ruby on rails ruby时区转换问题

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

我有一个场景,其中我得到一个时间戳,我需要在该时间戳中搜索该日期的所有预订。时间戳位于用户各自的时区中,数据库中的所有记录都存储在UTC中。因此,我自然需要将时间戳转换回UTC,然后进行搜索

以下是我正在做的事情:

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.明天.一天的开始
)