我在将日期转换为 UTC 然后返回用户时区时遇到一些问题。
由于我已经有很多用户,因此我使用时区宝石 https://github.com/panthomakos/timezone 获取他们的时区,结果如下:"太平洋时间(美国和加拿大)"。
当我向他们询问特定的日期/时间并且我想向其添加时区("太平洋时间(美国和加拿大)")并将其保存在 UTC 数据库中时,会出现问题。
我使用 jQuery UI 日期选择器获取日期,我以这种格式获取它:"星期日,十月 13, 2013"和这种格式的时间"上午 12:00"。
在此之后,我使用 DateTime.strptime("user input", "%A, %b %e, %Y %I:%M %P") 将其转换为 datetime。
我的问题是如何将存储在数据库中的用户时区设置为此日期的字符串"太平洋时间(美国和加拿大)"?
您应该能够格式化时区并将其添加到用户输入字符串中,然后按如下所示对其进行解析:
user_input += ActiveSupport::TimeZone.new("Pacific Time (US & Canada)").formatted_offset
DateTime.strptime(user_input, "%A, %b %e, %Y %I:%M %P%:z")