Używam ruby 1.9.3
i chcesz uzyskać Date or Time
obiekt z 'mm/dd/yyyy
' data format
ciągrubin DateTime parsowania z 'dd/mm/rrrr' Format
Time.zone.parse("12/22/2011")
to daje mi *** ArgumentError Exception: argument out of range
Używam ruby 1.9.3
i chcesz uzyskać Date or Time
obiekt z 'mm/dd/yyyy
' data format
ciągrubin DateTime parsowania z 'dd/mm/rrrr' Format
Time.zone.parse("12/22/2011")
to daje mi *** ArgumentError Exception: argument out of range
require 'Date'
my_date = Date.strptime("12/22/2011", "%m/%d/%Y")
Spróbuj Time.strptime("12/22/2011", "%m/%d/%Y")
Czy to może być opcja, aby użyć Time.strptime("01/28/2012", "%m/%d/%Y")
w miejsce Time.parse? W ten sposób masz lepszą kontrolę nad tym, jak Ruby zamierza przeanalizować datę.
Jeśli nie, istnieją klejnoty: (np. Ruby-american_date), aby Ruby 1.9 Time.parse zachowywał się jak Ruby 1.8.7, ale używaj go tylko wtedy, gdy jest to absolutnie konieczne.
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
Jeszcze jedno ruby 1.9.3 Konwersja to_time akceptuje teraz% d,% m,% Y jako format ciągu znaków "29/10/2013" .to_time => 2013-10-29 00:00:00 UTC – LHH
Jak wyżej, należy użyć metody strptime, ale należy zwrócić uwagę na różnice poniżej
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
(The +0000 jest strefa czasowa, a ja jestem teraz w GMT. - stąd +0000 Ostatni tydzień , zanim zegary wróciły, byłem w BST +0100. Mój application.rb zawiera wiersz config.time_zone = 'London')
Link do dokumentacji APIDock: http://apidock.com/ruby/DateTime/strptime/class –
Link do odpowiedniej klasy: https://apidock.com/ruby/Date/strptime/class :) – dinjas