Ruby String to Date Konvertierung


73

Ich bin mit einem Problem in Ruby on Rails konfrontiert. Ich möchte eine Formatzeichenfolge Tue, 10 Aug 2010 01:20:19 -0400 (EDT)in ein Datumsobjekt konvertieren .

Gibt es sowieso ich könnte das tun.

Folgendes habe ich ohne Glück angeschaut und ausprobiert:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Chronischer Parser
  3. Ruby: String in Datum konvertieren
  4. Analysieren des Datums aus Text mit Ruby

Bitte helfen Sie mir dabei.

Antworten:


135

Was ist falsch an der Date.parseMethode?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10

Es scheint zu funktionieren.

Das einzige Problem hierbei ist die Zeitzone. Wenn Sie ein Datum in der UTC-Zeitzone wünschen, ist es besser, ein TimeObjekt zu verwenden . Angenommen, wir haben eine Zeichenfolge:

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09

Ich konnte es nicht einfachere Methode zu konvertieren finden Timezu Date.


Danke Klew und Ryan. Das hat wie ein Zauber gewirkt. Date.parse war mir bekannt, aber ich hatte es nicht benutzt. Das ist ein Lernen für mich.
dkris

1
Ruby 1.9 hat die Zeit # to_date, um die Zeit in das Datum umzuwandeln.
Steenslag

Was ist, wenn ich es in Tag / Monat / Jahr brauche, zB: 16.10.2015?
Jackson Jegatheesan

15
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

Sollte sein:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')

8
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010

6
Dies ist eine Rails-Sache, keine Ruby-Sache, denke ich
C. Louis S.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.