Ruby on rails 停止轨道在何处之前将时间转换为UTC第5.2条
我正在使用Rail 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)。有吗? 当数据库
位置
记录和相关的打开我们的
记录。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存储时间是绝对必要的,但在这种情况下,将开放时间存储在“地点”的本地时区不是更合理、更简单吗?