Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 停止轨道在何处之前将时间转换为UTC第5.2条_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 停止轨道在何处之前将时间转换为UTC第5.2条

Ruby on rails 停止轨道在何处之前将时间转换为UTC第5.2条,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在使用Rail 5.2应用程序,它处理位置记录和相关的打开我们的记录。OpeningHour模型包含字段day(枚举),在(时间)开始,在(时间)结束 当我运行下面的程序时,Rails将时间从本地时区(+08:00)转换为UTC时间,然后将时间与任何打开的记录进行比较。由于在处开始和在处结束字段存储为没有时区的时间,因此查询中使用的时区不会对齐 Location.opening\u hours.where(“start\u at=?”,Time.now,Time.now)。有吗? 当数据库

我正在使用Rail 5.2应用程序,它处理
位置
记录和相关的
打开我们的
记录。
OpeningHour
模型包含字段
day
(枚举),
(时间)开始,
(时间)结束

当我运行下面的程序时,Rails将时间从本地时区(+08:00)转换为UTC时间,然后将时间与任何
打开的
记录进行比较。由于
处开始和
处结束字段存储为没有时区的时间,因此查询中使用的时区不会对齐

Location.opening\u hours.where(“start\u at=?”,Time.now,Time.now)。有吗?
当数据库中的时间已经在
localtime
中时,告诉Rails在比较之前不要转换为UTC时间的最佳方法是什么


任何帮助都将不胜感激

如果将application.rb中的本地时区配置为
config.time\u zone=“My timezone”
,则可以使用
time.zone。现在
来获取本地时区中的时间:

Location.opening_hours.where("start_at <= ? AND ends_at >= ?", Time.zone.now, Time.zone.now).any?
Location.opening\u hours.where(“start\u at=?”,Time.zone.now,Time.zone.now)。有吗?

如果将application.rb中的本地时区配置为
config.time\u zone=“My timezone”
,则可以使用
time.zone。现在
到达本地时区中的时间:

Location.opening_hours.where("start_at <= ? AND ends_at >= ?", Time.zone.now, Time.zone.now).any?
Location.opening\u hours.where(“start\u at=?”,Time.zone.now,Time.zone.now)。有吗?

尝试拨打
时间。当前的
而不是
时间。现在
@fongfan999感谢您的回复。我试着按您的建议调用时间。当前时间,但最终还是先转换为UTC。@fongfan999我明白了,也许我的问题不清楚。
处开始和
处结束字段存储为不带时区的时间(即:
09:00:00
或`17:00:00)。时间在比较之前不应转换为UTC,因为时间已经存储在本地时区中。“数据库中的时间已经在本地时间中”-Rails希望所有数据库时间都在UTC中。您是如何存储
OpeningHour
记录的?它们应该被相应地转换。@Stefan如果是这样,那么在创建时间之前,时间不会被转换为UTC。。解决该问题将重新对齐时区以进行准确比较,尽管在我看来,+08:00时区中某个位置的营业时间09:00:00到17:00:00存储在数据库中,作为
01:00:00
09:00:00
,并将其转换回比较似乎不合逻辑。。我可以看到各种情况,在UTC中存储时间是绝对必要的,但是在这种情况下,只在“地点”的本地时区中存储开放时间不是更合理、更简单吗?尝试调用
Time.current
而不是
Time。现在
@fongfan999感谢您的回复。我试着按您的建议调用时间。当前时间,但最终还是先转换为UTC。@fongfan999我明白了,也许我的问题不清楚。
处开始和
处结束字段存储为不带时区的时间(即:
09:00:00
或`17:00:00)。时间在比较之前不应转换为UTC,因为时间已经存储在本地时区中。“数据库中的时间已经在本地时间中”-Rails希望所有数据库时间都在UTC中。您是如何存储
OpeningHour
记录的?它们应该被相应地转换。@Stefan如果是这样,那么在创建时间之前,时间不会被转换为UTC。。解决该问题将重新对齐时区以进行准确比较,尽管在我看来,+08:00时区中某个位置的营业时间09:00:00到17:00:00存储在数据库中,作为
01:00:00
09:00:00
,并将其转换回比较似乎不合逻辑。。我可以看到,在各种情况下,以UTC存储时间是绝对必要的,但在这种情况下,将开放时间存储在“地点”的本地时区不是更合理、更简单吗?