gpt4 book ai didi

ruby-on-rails - 在 Rails 中保留时区

转载 作者:行者123 更新时间:2023-12-04 03:35:21 25 4
gpt4 key购买 nike

如果我有来自客户端的 "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

关于ruby-on-rails - 在 Rails 中保留时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com