ruby DateTime从“mm / dd / yyyy”格式parsing

我正在使用ruby 1.9.3并希望从“ mm/dd/yyyy ”dateformatstring中获取Date or Time对象

 Time.zone.parse("12/22/2011") 

这是给我*** ArgumentError Exception: argument out of range

 require 'Date' my_date = Date.strptime("12/22/2011", "%m/%d/%Y") 

如上所述,使用strptime方法,但注意下面的区别

 Date.strptime("12/22/2011", "%m/%d/%Y") => Thu, 22 Dec 2011 DateTime.strptime("12/22/2011", "%m/%d/%Y") => Thu, 22 Dec 2011 00:00:00 +0000 Time.strptime("12/22/2011", "%m/%d/%Y") => 2011-12-22 00:00:00 +0000 

(+0000是时区信息,我现在在格林尼治标准时间 – 因此+0000。上周,在时钟返回之前,我在BST +0100。我的application.rb包含行config.time_zone ='伦敦“)

尝试Time.strptime("12/22/2011", "%m/%d/%Y")

是否可以使用Time.strptime("01/28/2012", "%m/%d/%Y")来代替Time.parse? 这样你就可以更好地控制Ruby如何parsingdate。

如果没有gem(例如ruby-american_date),那么Ruby 1.9 Time.parse就像Ruby 1.8.7一样,但是只有在绝对必要的时候才使用它。

 1.9.3-p0 :002 > Time.parse '01/28/2012' ArgumentError: argument out of range 1.9.3-p0 :003 > require 'american_date' 1.9.3-p0 :004 > Time.parse '01/28/2012' => 2012-01-28 00:00:00 +0000