"2016-02-04T14:30:00.000+01:00" 创建 此条目存储在 postgres 中,starts_at 应保持时区 - 这对于保持原样-6ren">
gpt4 book ai didi

ruby-on-rails - rails : how to get datetime from model in original timezone (different entries = different timezones)

转载 作者:行者123 更新时间:2023-11-29 13:21:58 25 4
gpt4 key购买 nike

给定模型,我想用 "starts_at"=>"2016-02-04T14:30:00.000+01:00"

创建

此条目存储在 postgres 中,starts_at 应保持时区 - 这对于保持原样并在 HTML 中显示 准确 这一次很重要 - 14:30。对商业的意义:用户在伦敦节省了时间。管理员检查来自澳大利亚的条目,他应该在用户的时区

与用户通话

同时我需要服务器能够正确理解现在是几点,所以我可以“现在选择 1 小时内的条目”

Rails 提供:

[28] pry(main)> entry.starts_at
=> 2016-02-04 13:30:00 UTC
[17] pry(main)> entry.attributes_before_type_cast["starts_at"]
=> "2016-02-04 13:30:00+00"

我想 postgress 会丢弃时区,尽管我尝试输入:

  t.change :starts_at, 'timestamp with time zone'

如何在适当的时区存储/检索存储在 postgress 中的字段。它可以是不同条目的任何时区,代码不知道哪个条目有哪个时区,所以我们不能使用 in_time_zone(除非我将时区存储在单独的字段中,这看起来太假了)

是否有类似 do_not_touch_timezones_for :starts_atstarts_at.original_timezone 或全局配置的东西。

尝试过 self.skip_time_zone_conversion_for_attributes = [:starts_at, :ends_at] - 没有任何效果

最佳答案

Time#parse 有什么问题吗? ?它似乎返回你想要的时间:

Time.parse("2016-02-04T14:30:00.000+01:00")
#=> 2016-02-04 14:30:00 +0100

关于ruby-on-rails - rails : how to get datetime from model in original timezone (different entries = different timezones),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171407/

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