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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |