Rails时区问题

作者: 柳辉 | 来源:发表于2017-10-10 13:39 被阅读74次

一个Rails应用有三个时间:

  • 服务器系统的时间
  • Rails应用的时间
  • 存入数据库的时间

如果你想存入本地时间到数据库中。

首先,你要先确保系统时间是正确的。
其次,你要把应用的时区设置为本地时区
最后,ActiveRecord的时区也设置为本地时区

按照上述可以写出下面的代码

config.time_zone = "beijing" # 从ActiveRecord中取的时候是本地时间
config.active_record.default_timezone = :local # 存入数据库的时间也是本地时区的时间
config.active_record.time_zone_aware_attributes = false # 关闭以UTC格式存入数据库并读取以本地时区格式读取的功能

这样就可以以本地时区时间存入数据库。

如果你的应用是面对全球用户。

建议以utc的时区存到数据库,每次查询的时候,转换成本地时区就可以。那么,Rails是默认时区utc,所以就不用配置application.rb

去掉

config.time_zone = "beijing" # 从ActiveRecord中取的时候是本地时间
config.active_record.default_timezone = :local # 存入数据库的时间也是本地时区的时间
config.active_record.time_zone_aware_attributes = false # 关闭以UTC格式存入数据库并读取以本地时区格式读取的功能

那么,我们要查询今天一天的订单,怎么做呢?

Order.where(created_at: Time.now.beginning_of_day..Time.now.end_of_day )

Time.now是本地时区的时间,Rails会自动识别并去掉时区差。

比如北京时区,那么,会beginning_of_day会从今天的00:00变成昨天的16:00,自动减8小时。
同样的,end_of_day也会减8小时,也就是从15:59:59.999999,如下图

image.png

这样就能准确查询出这一天所有的订单

相关文章

  • Rails时区问题

    一个Rails应用有三个时间: 服务器系统的时间 Rails应用的时间 存入数据库的时间 如果你想存入本地时间到数...

  • rails 中的时区问题

    UTC 为协调世界时。 其中东西十二区各站7.5度。 UTC 与当地时间转换 在东时区UTC时间 加上所在时区时差...

  • Java 中的时区理解和处理

    本文内容:1,时区了解一下2,产生时区的原因3,常用时间类,哪些是有会导致时区问题4,开发中如何避免产生时区问题 ...

  • 译:Rails之关于时间(时区)

    It's About Time (Zones) 这是时间系列的第一篇文章。第二篇的主题是 a case study...

  • 时区问题

    //获取格林威治标准时间public void getGMTTime() {//mothed 2TimeZone ...

  • 时区问题

    2020-11-10 00:00:00 +0000 ---> GMT+0 尼林格日标准时间 也就是 0时区。 ...

  • Rails 101第三课5-3下拉选项不显示问题2019-04-

    gem 'jquery-rails'的安装顺序问题, gem 'jquery-rails'在注入//= requi...

  • Mysql更新时区表

    时区问题 Django项目做了数据库迁移后有时候出现时区上的问题,例如django项目中设置的时区是TIME_Z...

  • rails c  报错

    在做rails console这个命令时遇到问题贴在这里 $ rails consoleRunning via S...

  • Centos 7 系统时区问题

    Centos 7 系统时区问题

网友评论

    本文标题:Rails时区问题

    本文链接:https://www.haomeiwen.com/subject/adxyyxtx.html