gpt4 book ai didi

ruby-on-rails - Rails 3 日期时间和时间 beginning_of_day end_of_day 格式不正确

转载 作者:行者123 更新时间:2023-11-29 11:26:06 26 4
gpt4 key购买 nike

我正在尝试使用以下代码查找特定日期的事件:

Event.where('starttime BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day)

如果我在 Rails 控制台中运行 DateTime.now.beginning_of_day,我得到的正是我所期望的:

2012 年 4 月 9 日星期一 00:00:00 -0700

我可以看到问题出在哪里,但查看 Rails 控制台中的 SQL。不知何故,当日期进入 SQL 查询时,它会自动格式化为错误的日期和时间。

SELECT "events".* FROM "events" WHERE (starttime BETWEEN '2012-04-09 07:00:00' AND '2012-04-10 06:59:59')

正如上面的 sql 所说,这给我的结果从今天到明天各不相同。我可以看到,当 DateTime.now.beginning_of_day 和 DateTime.now.end_of_day 进入 sql 查询后,它们的格式也不正确。我需要以某种方式格式化吗?知道为什么它会转到今天 7:00 和明天 7:00 吗?

我不知道这是否有所不同,但我正在使用 PostgreSQL。

谢谢!

最佳答案

参见:http://railscasts.com/episodes/106-time-zones-in-rails-2-1

我认为您在上面引用的时间实际上是同一时间,只有一个是 UTC 时间(您使用的是太平洋时间,对吗?)。要解决此问题,您可以尝试设置:

config.time_zone = "太平洋时间(美国和加拿大)"

在你的环境中.rb

你也可以试试:

DateTime.now.utc.beginning_of_day
DateTime.now.utc.end_of_day

所以您根据数据库使用 UTC

关于ruby-on-rails - Rails 3 日期时间和时间 beginning_of_day end_of_day 格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com