Frage

Ich Time.parse bin mit einem Time-Objekt aus einem String zu erstellen.

Aus irgendeinem Grund

Time.parse("05-14-2009 19:00")

bewirkt, dass ein Argument unserer Reichweite Fehler, während

Time.parse("05-07-2009 19:00")

nicht

Irgendwelche Ideen?

War es hilfreich?

Lösung

Meine Vermutung wäre, dass sein den zweiten Teil des Strings erwartet (die 14) um den Monat zu sein.

Dieser Link kann Ihnen helfen, zu analysieren.

Andere Tipps

Wenn Sie wissen, das Format der Zeichenfolge Verwendung:

Time.strptime(date, format, now=self.now) {|year| ...}   

http://www.ruby-doc.org /core-1.9/classes/Time.html#M000266

Es wird Ihr Problem lösen und wird wahrscheinlich schneller als Time.parse.

EDIT:

Sieht aus wie sie strptime von Time-Klasse nahm, aber es genannt sowieso Date.strptime. Wenn Sie auf Rails sind, können Sie tun:

Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time

Wenn Sie reinen Rubin verwenden dann benötigen Sie:

require 'date'
d=Date._strptime("05-14-2009 19:00","%m-%d-%Y %H:%M")

Time.utc(d[:year], d[:mon], d[:mday], d[:hour], d[:min], 
         d[:sec], d[:sec_fraction], d[:zone])

Siehe auch: Datum und Uhrzeit Formatierung Probleme in Ruby on Rails .

Es ist wegen der Heuristik von Time#parse.

Und es ist wegen angloamerikanischen Formate.

Mit Strichen '-'. Es erwartet mm-dd-yyyy, mit Schrägstrichen '/' es erwartet dd / mm / yyyy

Dieses Verhalten Änderungen absichtlich in 1.9. eur, iso und jp Datum zu erreichen Standards.

Sie wahrscheinlich brauchen es nicht, dieses Problem zu lösen, aber ich noch empfehlen die natürliche Sprache Datum / Zeit-Parser Check-out Chronic hat es mich gerettet viel Arbeit ein paar mal.

Es wird erwartet, wahrscheinlich Tag-Monat-Jahr-Format, so dass Ihre erste Wert versucht, den fünften Tag des 14. Monats angeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top