Rubystringdate转换

我在Ruby on Rails中遇到了一个问题。 我正在寻找转换格式stringTue, 10 Aug 2010 01:20:19 -0400 (EDT)到一个date对象。

无论如何,我可以做到这一点。

以下是我所看到并试图在下面没有运气:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. 慢性parsing器
  3. Ruby:将string转换为date
  4. 使用Rubyparsing文本的date

这个你能帮我吗。

Date.parse方法有什么问题?

 str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" date = Date.parse str => #<Date: 4910837/2,0,2299161> puts date 2010-08-10 

这似乎工作。

这里唯一的问题是时区。 如果你想在UTC时区使用date,那么最好使用Time对象,假设我们有string:

 str = "Tue, 10 Aug 2010 01:20:19 +0400" puts Date.parse str 2010-08-10 puts Date.parse(Time.parse(str).utc.to_s) 2010-08-09 

我找不到更简单的方法来转换Time Date

 Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z") 

应该:

 Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z') 
 str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" str.to_date => Tue, 10 Aug 2010 

你可以试试https://rubygems.org/gems/dates_from_string

在结构中查找date:

 text = "get car from repair 2015-02-02 23:00:10" dates_from_string = DatesFromString.new dates_from_string.find_date(text) => ["2015-02-02 23:00:10"]