J'utilise Ruby 1.9.3
et veulent obtenir Date or Time
objet de 'mm/dd/yyyy
_ date format
chaîne
Time.zone.parse("12/22/2011")
cela me donne *** ArgumentError Exception: argument out of range
require 'Date'
my_date = Date.strptime("12/22/2011", "%m/%d/%Y")
Comme ci-dessus, utilisez la méthode strptime, mais notez les différences ci-dessous.
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 correspond aux informations du fuseau horaire, et je suis maintenant à l'heure GMT - d'où +0000. La semaine dernière, avant le retour des horloges, j'étais dans BST +0100. Mon application.rb contient la ligne config.time_zone = 'London ')
Essayez Time.strptime("12/22/2011", "%m/%d/%Y")
Serait-ce une option pour vous d'utiliser Time.strptime("01/28/2012", "%m/%d/%Y")
à la place de Time.parse? De cette façon, vous aurez un meilleur contrôle sur la manière dont Ruby va analyser la date.
Sinon, il existe des gemmes: (par exemple, Ruby-american_date) pour que le Ruby 1.9 Time.parse se comporte comme Ruby 1.8.7, mais ne l'utilisez que si c'est absolument nécessaire.
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