Parsing-Daten können in einigen Fallstricken auftreten, insbesondere wenn sie im Format MM / TT / JJJJ oder TT / MM / JJJJ vorliegen, z. B. kurze Daten, die in den USA oder in Europa verwendet werden.
Date#parse
Versuche herauszufinden, welche verwendet werden sollen, aber es gibt viele Tage im Monat im Jahr, an denen Mehrdeutigkeiten zwischen den Formaten zu Analyseproblemen führen können.
Ich würde empfehlen, herauszufinden, wie hoch die LOCALE des Benutzers ist. Auf dieser Grundlage wissen Sie dann, wie Sie intelligent analysieren können Date.strptime
. Der beste Weg, um herauszufinden, wo sich ein Benutzer befindet, besteht darin, ihn bei der Anmeldung zu fragen und dann in seinen Einstellungen eine Einstellung anzugeben, um ihn zu ändern. Angenommen, Sie können es durch eine clevere Heuristik ausgraben und den Benutzer nicht für diese Informationen stören, ist dies fehleranfällig. Fragen Sie einfach.
Dies ist ein Test mit Date.parse
. Ich bin in den USA:
>> Date.parse('01/31/2001')
ArgumentError: invalid date
>> Date.parse('31/01/2001') #=> #<Date: 2001-01-31 (4903881/2,0,2299161)>
Das erste war das richtige Format für die USA: MM / TT / JJJJ, aber Date mochte es nicht. Die zweite war für Europa richtig, aber wenn Ihre Kunden überwiegend in den USA ansässig sind, erhalten Sie viele schlecht analysierte Daten.
Ruby's Date.strptime
wird verwendet wie:
>> Date.strptime('12/31/2001', '%m/%d/%Y') #=> #<Date: 2001-12-31 (4904549/2,0,2299161)>