相关疑难解决方法(0)

Rails:如何将日期时间字符串解析为特定时区

我在Debian上使用Rails 3.2和ruby 1.9.3.我有一个应用程序,通过HTML表单以字符串的形式收集日期,时间和时区.像这样的东西:

start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
Run Code Online (Sandbox Code Playgroud)

我想要做的是将这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
Run Code Online (Sandbox Code Playgroud)

但是,我无法将时区合并到%Z的结果时间中.它要么不解析,要么将时间解释为UTC而不是中心时间.所以我的问题是,如何在不改变存储的实际日期/时间值的情况下将日期字符串强制转换为某个时区.我希望能够将字符串解析成包括与它正确的时区的日期/时间对象在那个时候,这样未来的时区转换是准确的.我看了一遍,找不到办法做到这一点.这很奇怪,因为这似乎是从HTML表单输入的日期常见的事情.感谢您的任何帮助.

timezone ruby-on-rails date

36
推荐指数
3
解决办法
4万
查看次数

我如何使用Ruby来解析时间,就好像它在我指定的时区中一样,区域的格式为America/Los_Angeles?

我希望能够从Ruby(1.8.7)中的字符串解析Time,其中字符串不包含任何时区信息.我想把这个字符串看作是在这种格式中指定的许多时区中的任何一个:'America/New_York'.

时间字符串示例:

'2010-02-05 01:00:01'
Run Code Online (Sandbox Code Playgroud)

我花了很长时间试图弄清楚这个.

我确实找到了类似的问题,但它的答案并不适用于我的情况:我如何让Ruby解析时间,好像它处于不同的时区?

上述解决方案的问题是我的时区不能全部用Time.parse支持的3字母格式表示(http://www.ruby-doc.org/stdlib-1.8.7/libdoc/time/rdoc /classes/Time.html#M004931).

有没有一个好方法来完成我在这里要做的事情?

编辑:我的回答实际上是一个答案.

ruby timezone

10
推荐指数
2
解决办法
3667
查看次数

标签 统计

timezone ×2

date ×1

ruby ×1

ruby-on-rails ×1