Wenn d = DateTime.now
ja, wie konvertiere ich 'd' in UTC (mit dem entsprechenden Datum)?
96
d = DateTime.now.utc
Hoppla!
Das scheint in Rails zu funktionieren, aber nicht in Vanilla Ruby (und das ist natürlich die Frage)
d = Time.now.utc
Funktioniert jedoch.
Gibt es einen Grund, den Sie verwenden müssen DateTime
und nicht Time
? Time
sollte alles enthalten, was Sie brauchen:
irb(main):016:0> Time.now
=> Thu Apr 16 12:40:44 +0100 2009
funktioniert in Standard-Ruby (dh ohne ActiveSupport).
quelle
new_offset
Das Standardargument ist0
bereits. SoDateTime.now.new_offset
können auch verwendet werden.Leider verfügt die DateTime-Klasse nicht über die in der Time-Klasse verfügbaren praktischen Methoden, um dies zu tun. Sie können jedes DateTime-Objekt folgendermaßen in UTC konvertieren:
Sie können von UTC zu Ortszeit zurückkehren, indem Sie:
Wo
d
ist ein DateTime-Objekt in UTC-Zeit? Wenn Sie diese als praktische Methoden möchten, können Sie sie folgendermaßen erstellen:Sie können dies in der folgenden irb-Sitzung in Aktion sehen:
Wie Sie oben sehen können, hat das ursprüngliche DateTime-Objekt einen Offset von -04: 00 (Eastern Time). Ich bin in der pazifischen Zeit mit einem Offset von -07: 00.
localtime
Wenn Sie wie zuvor beschrieben aufrufen, wird das DateTime-Objekt ordnungsgemäß in die Ortszeit konvertiert. Wenn Sieutc
das Objekt ordnungsgemäß aufrufen, wird es in einen UTC-Offset konvertiert.quelle
Versuchen Sie dies, funktioniert in Ruby:
quelle
Sie können eine ENV einstellen, wenn Sie möchten
Time.now
undDateTime.now
in UTC-Zeit antworten möchten .quelle
In irb:
konvertiert die Zeit in utc. Aber wie geschrieben, wenn es nur Zeit ist, können Sie verwenden:
und sofort bekommen.
quelle
Die Zeichenfolgendarstellung einer DateTime kann von der Time-Klasse analysiert werden.
quelle