Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 使用月初时Rails 5中的时区_Ruby On Rails_Postgresql_Datetime_Ruby On Rails 4_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 使用月初时Rails 5中的时区

Ruby on rails 使用月初时Rails 5中的时区,ruby-on-rails,postgresql,datetime,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Postgresql,Datetime,Ruby On Rails 4,Ruby On Rails 5,我的Rails 5应用程序设置为BRT(巴西时区),我的Postgres数据库设置为UTC。我从来不用担心这一点,因为Rails在读取或写入数据库时总是计算正确的时间。因此,例如,当我有一个输入字段time=15:00时,它将18:00写入数据库,当从数据库读取时,它将再次返回15:00。太好了 但现在我想将月初写入数据库: 时间。现在。从2017-04-01 00:00:00开始的一个月的开始 Payment.create( :time => Time.now.beginning_o

我的Rails 5应用程序设置为BRT(巴西时区),我的Postgres数据库设置为UTC。我从来不用担心这一点,因为Rails在读取或写入数据库时总是计算正确的时间。因此,例如,当我有一个输入字段
time=15:00
时,它将
18:00
写入数据库,当从数据库读取时,它将再次返回
15:00
。太好了

但现在我想将月初写入数据库:

时间。现在。从2017-04-01 00:00:00开始的一个月的开始

Payment.create(
  :time => Time.now.beginning_of_month
)
现在,它将这个(在BRT中)准确地写入数据库,而不转换为UTC。当我稍后从数据库中读取此信息时,它将其转换为BRT
2017-03-31 21:00:00
,这是错误的

当然,在将时间保存到数据库之前,我可以将时间转换为UTC。但我觉得奇怪的是,Rails总是负责转换,而在本例中却没有

我希望问题清楚了


有什么想法吗?

我发现了一篇关于这个主题的非常好的文章:

基本上,我必须更改
时间。现在
更改为
时间。当前
更改为时间。现在忽略时区设置