从其他时区解析日期字符串时的错误日期

时间:2015-04-30 09:39:34

标签: ruby-on-rails ruby

我试图解析这个时间字符串“2015年4月29日21:58:06 PDT”。这样做的正确方法是什么?

第一种方法:

zone      = Time.zone
Time.zone = "Pacific Time (US & Canada)"
payed_at  = Time.parse params[:payment_date]

payed_at.in_time_zone(zone)

结果:

Thu, 30 Apr 2015 10:21:30 CEST +02:00

第二个猜测:

payed_at      = DateTime.parse date

结果:

Thu, 30 Apr 2015 21:58:29 +0000 

正确的结果将是

Thu, 30. April 2015, 06:58 Uhr

环境:

ruby '2.1.5'
gem 'rails', '~> 3.2.15'

2 个答案:

答案 0 :(得分:0)

使用 strptime 方法解析 例如:DateTime.strptime('December 09, 2011', '%B %d, %Y')

http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-c-_strptime

答案 1 :(得分:0)

由于您在代码中指定了rails,因此这是一个ActiveSupport解决方案:

tz = ActiveSupport::TimeZone['US/Pacific']
tz.parse("21:58:06 Apr 29, 2015 PDT").localtime
#⇒ 2015-05-01 06:58:29 +0200