Mauvaise date avec ruby Date.aujourd'hui et DateTime.maintenant
Question
J'ai installé ruby 1.8.6-p383 avec RVM.Système de ruby 1.9.1_p378-1
Je suis de la mauvaise date de Date de.aujourd'hui et DateTime.maintenant, lors de l'utilisation de ruby 1.8..Alors Que Le Temps.maintenant est correct:
irb(main):002:0> DateTime.now.to_s
=> "2126--1-10618T11:23:43+00:00"
irb(main):004:0> Date.today.to_s
=> "2126--1-10618"
irb(main):005:0> Time.now
=> Thu Jan 28 11:55:27 +0000 2010
Tout va bien si je passe à ruby 1.9:
irb(main):003:0> DateTime.now.to_s
=> "2010-01-28T11:58:51+00:00"
irb(main):004:0> Date.today.to_s
=> "2010-01-28"
irb(main):005:0> Time.now
=> 2010-01-28 11:59:05 +0000
Des conseils sur la façon d'obtenir DateTime pour fonctionner correctement en cas de ruby 1.8 serait le plus apprécié!
La solution
Je suis tombé sur le même problème et a obtenu 3 différentes solutions, j'ai essayé les 2 et les deux travaillé.Lire plus sur le sujet ici:
http://www.ruby-forum.com/topic/210647
Jarmo
Autres conseils
La chaîne renvoyée semble être très cassé:i) l'année est 2126, ii) il y a deux traits d'union entre l'année et le mois, et ii) la journée est 10618.
Quelle plate-forme êtes-vous?Quel fuseau horaire vous êtes sur (l'exemple implique que vous êtes en GMT)?
Je suis sur WinXP et Ruby 1.8.6-p111 donne le même résultat dans tous les trois cas.
Edit:J'ai fait quelques recherches dans le Ruby code source (à l'Date
et DateTime
sont définis dans lib/date.rb
).
Il s'avère que Date.today
les appels en interne Time.now.__send__(:to_date)...
, donc peut-être que vous devriez essayer d'appeler Time.now.__send__(:to_date).to_s
dans irb
et de comparer la sortie de Time.now.to_s
afin de cerner le problème.
Date.today
aussi appels .new_start(...)
sur le créé Date
exemple peut-être que c'est bien la date dans votre cas.
Je ne sais pas si vous exécutez les choses localement ou sur le serveur, mais je pense que ruby prend peut-être le serveur de date, ce qui peut être dans un autre fuseau horaire que vous êtes, et ainsi, apparaissent différemment.