我在 Debian 上使用 Rails 3.2 和 ruby 1.9.3。我有一个应用程序,它通过 HTML 表单以字符串的形式收集日期、时间和时区。像这样的东西:
start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
我想要做的是将这 3 个元素解析为一个日期,该日期作为 UTC 保存到我的数据库中,在这种情况下,一旦它处于 UTC 时区,它将增加 7 小时的开始时间。因此,一旦它作为 UTC 在数据库中存储的时间将是 17:00,而不是接收到的中央时间。
我尝试过这样的事情来解析日期:
ActiveSupport::TimeZone[timezone].at DateTime.strptime("{ 2012-04-09 20:00:00 }", "{ %Y-%m-%d %H:%M:%S }").to_i
但是,我无法使用 %Z 将时区合并到结果时间中。它要么不解析,要么时间被解释为 UTC 而不是中央时间。所以我的问题是,如何在不更改存储的实际日期/时间值的情况下将日期字符串强制转换为某个时区。我希望能够将字符串解析为包含正确时区的日期/时间对象,以便将来的时区转换是准确的。我已经看遍了,找不到办法做到这一点。这很奇怪,因为这似乎与从 HTML 表单输入的日期一样常见。感谢您的任何帮助。