我正在尝试使用Ruby 2.0中的Time类解析日期时间。我不知道如何解析日期并在指定的时区中获取它。我已经使用Time.zone.parse解析了我第一次调用Time.zone并将其设置为指定时区的日期。在下面的示例中,我设置了区域,但是它不影响strptime,我尝试做Time.zone.parse(date),但是我无法让它解析下面的日期。

Time.zone = "Central Time (US & Canada)"
#=> "Central Time (US & Canada)"
irb(main):086:0> Time.strptime("08/26/2013 03:30 PM","%m/%d/%Y %I:%M %p")
#=> 2013-08-26 15:30:00 -0400

最佳答案

Time.zone 不是Ruby的一部分,而是ActiveSupport(Rails附带的)的一部分。因此, strptime 根本不了解Time.zone。不过,您可以使用ActiveSupport::TimeWithZone将正常的Ruby Time转换为 in_time_zone ,默认情况下,该值使用Time.zone的值:

require 'active_support/core_ext/time'
Time.zone = 'Central Time (US & Canada)'

time = Time.strptime('08/26/2013 03:30 PM', '%m/%d/%Y %I:%M %p')
#=> 2013-08-26 15:30:00 -0400
time.in_time_zone
#=> Mon, 26 Aug 2013 14:30:00 CDT -05:00

关于ruby - 使用Time.zone使用strptime解析时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18138450/

10-13 02:29