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

ruby-on-rails – 保留Rails中的时区

发布时间:2020-12-17 01:29:06 所属栏目:百科 来源:网络整理
导读:如果我有一个来自客户的“Wed,22 Jun 2011 09:43:58 0200”形式的时间字符串,我希望保存时区.这很重要,因为重要的不仅是绝对的UTC时间,还有时区. Time.zone.parse(t)会将时间转换为Time.zone当时正在使用的区域,从而丢失源时区. 我是否必须从上面的字符串中
如果我有一个来自客户的“Wed,22 Jun 2011 09:43:58 0200”形式的时间字符串,我希望保存时区.这很重要,因为重要的不仅是绝对的UTC时间,还有时区.

Time.zone.parse(t)会将时间转换为Time.zone当时正在使用的区域,从而丢失源时区.

我是否必须从上面的字符串中手动提取时区,或者是否有惯用的方法来执行此操作?

解决方法

DateTime字段只能存储’YYYY-MM-DD HH:MM:SS'( MySQL),没有时区信息.

您应该将日期时间存储在UTC中,将时区存储在不同的字段中,最好是一个整数,指定与UTC的偏移量(以分钟为单位).

您可以像这样提取偏移量:

ruby-1.9.2-p180:001:0>> require 'active_support/all' # included by Rails by default
# => true
ruby-1.9.2-p180:002:0>> dt = DateTime.parse "Wed,22 Jun 2011 09:43:58 +0200"
# => Wed,22 Jun 2011 09:43:58 +0200
ruby-1.9.2-p180:003:0>> dt.utc_offset
# => 7200
ruby-1.9.2-p180:004:0>> dt.utc
# => Wed,22 Jun 2011 07:43:58 +0000

编辑:

练习往返

ruby-1.9.2-p180 :039 > u.utc.new_offset(u.offset)
=> Wed,22 Jun 2011 09:43:58 +0500 
ruby-1.9.2-p180 :040 > u
=> Wed,22 Jun 2011 09:43:58 +0500

(编辑:李大同)

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

    推荐文章
      热点阅读