加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails时间戳不使用正确的时区

发布时间:2020-12-16 20:00:03 所属栏目:百科 来源:网络整理
导读:我对轨道上的时区有些困惑.我想要我的rails应用程序使用英国夏令时(如美国的夏令时)在我的模型中在updated_at和created_at中设置的时间戳.我改变了我的环境 config.time_zone = 'London' ubuntu服务器我的应用程序似乎是使用BST的时间:在命令行,例如,如果我
我对轨道上的时区有些困惑.我想要我的rails应用程序使用英国夏令时(如美国的夏令时)在我的模型中在updated_at和created_at中设置的时间戳.我改变了我的环境
config.time_zone = 'London'

ubuntu服务器我的应用程序似乎是使用BST的时间:在命令行,例如,如果我键入’日期’,我得到当前时间(不抵消一个小时).在rails控制台中,我看到以下内容:

>> time = Time.now
=> Wed Oct 27 16:29:17 +0100 2010
>> time.zone
=> "BST"

一切都好但是,如果我创建一个新的AR模型对象并保存它,则时间戳是从一小时以前.所以,看起来这是使用UTC.现在,我可以看到这样的逻辑:由于时间戳可能在模型逻辑中使用,您希望它们基于不变的标尺时间,即UTC.但是,这是一个奇怪的行为,我不明白:

#change a record and save it
>> someobj.save
=> true
#object's updated_at is one hour ago
>> someobj.updated_at
=> Wed,27 Oct 2010 15:34:22 UTC +00:00
>> Time.now
=> Wed Oct 27 16:34:31 +0100 2010
#however,Time.now - object's updated at is just a few seconds.
>> Time.now - someobj.updated_at
=> 15.305549

所以,在进行减法之前,将updated_at转换为当前的时区.

我想在当前时区显示日期的原因只是在视图中的状态报告等:如果有人更新我想让他们看到更新“1分钟前”而不是“一小时前”的内容.

有谁可以解开我吗欢呼声,最大

编辑:我的即时问题,显示正确的时间在状态,是通过使用’time_ago_in_words’帮助器来解决的,它调整时区.我仍然希望有人解释时间戳发生了什么事情:)

解决方法

时间戳默认存储在UTC中,这可能是最好的方法.如果您从一个服务器环境转移到另一个服务器环境,那么您不希望所有的时间都在转换,只因为您切换时区.

如果您想知道当地时区的时间戳,那么您只需要这样做:

someobj.updated_at.localtime

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读