【问题标题】:Converting date to user timezone in Rails在 Rails 中将日期转换为用户时区
【发布时间】:2013-10-21 06:39:21
【问题描述】:

我在将日期转换为 UTC 然后再转换回用户时区时遇到一些问题。

由于我已经有很多用户,我正在使用时区 gem https://github.com/panthomakos/timezone 获取他们的时区,我得到的结果如下:“太平洋时间(美国和加拿大)”。

当我向他们询问特定的日期/时间并且我想向其中添加时区(“太平洋时间(美国和加拿大)”)并将其以 UTC 格式保存在数据库中时,就会出现问题。

我正在使用 jQuery UI Datepicker 获取日期,我以这种格式获取它:“Sunday, Oct 13, 2013”​​,时间以这种格式“12:00 am”。

之后我使用 DateTime.strptime("user input", "%A, %b %e, %Y %I:%M %P") 将其转换为日期时间。

我的问题是如何将存储在数据库中的用户时区设置为该日期的字符串“太平洋时间(美国和加拿大)”?

【问题讨论】:

    标签: ruby ruby-on-rails-3 timezone


    【解决方案1】:

    您应该能够格式化时区并将其添加到用户输入字符串中,然后解析它,如下所示:

    user_input += ActiveSupport::TimeZone.new("Pacific Time (US & Canada)").formatted_offset
    DateTime.strptime(user_input, "%A, %b %e, %Y %I:%M %P%:z")
    

    【讨论】:

    • 我对此进行了测试,但 in_time_zone 更改了时间:DateTime.parse('Sunday, Oct 13, 2013 01:00 pm', '%A, %b %e, %Y %I:%M %P').in_time_zone("Pacific Time (US & Canada)") => Sun, 13 Oct 2013 06:00:00 PDT -07:00 我想保持与上述示例相同的时间(下午 1:00)。
    • @AlexPanait 查看我编辑的帖子,希望对你更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2016-02-17
    • 2012-01-30
    相关资源
    最近更新 更多