Wie bekomme ich einen UTC-Zeitstempel in Ruby?
time = Time.now.getutc
Begründung: In meinen Augen ist ein Zeitstempel genau das: Ein Zeitpunkt. Dies kann mit einem Objekt genau dargestellt werden. Wenn Sie etwas anderes benötigen, einen Skalarwert, z. B. Sekunden seit der Unix-Epoche, 100-ns-Intervalle seit 1601 oder eine Zeichenfolge für Anzeigezwecke oder zum Speichern des Zeitstempels in einer Datenbank, können Sie diesen problemlos vom Objekt abrufen. Das hängt jedoch sehr stark von Ihrem Verwendungszweck ab.
Zu sagen, dass »ein echter Zeitstempel die Anzahl der Sekunden seit der Unix-Epoche ist«, fehlt ein wenig, da dies eine Möglichkeit ist, einen Zeitpunkt darzustellen, aber es werden auch zusätzliche Informationen benötigt, um überhaupt zu wissen, dass Sie es zu tun haben eine Zeit und keine Zahl. Ein Time
Objekt löst dieses Problem gut, indem es einen Zeitpunkt darstellt und auch explizit angibt, was es ist .
Sie könnten verwenden :
Time.now.to_i
.quelle
Die Standardformatierung ist meiner Meinung nach nicht sehr nützlich. Ich bevorzuge ISO8601, da es sortierbar, relativ kompakt und allgemein anerkannt ist:
quelle
/usr/share/ruby/2.0/time.rb
.Normalerweise hat der Zeitstempel keine Zeitzone.
quelle
to_f
wird besser seinWenn Sie einen für Menschen lesbaren Zeitstempel benötigen (wie dies bei der Schienenmigration der Fall ist), z. " 20190527141340 "
quelle
Was nützt ein Zeitstempel, dessen Granularität in Sekunden angegeben wird? Ich finde es viel praktischer, damit zu arbeiten
Time.now.to_f
. Sie können sogar einen werfento_s.sub('.','')
, um den Dezimalpunkt zu entfernen, oder eine Typumwandlung wie folgt durchführen :Integer(1e6*Time.now.to_f)
.quelle
Integer(1e3*Time.now.to_f)
so dass mein serverseitiger Ruby-Zeitstempel der gleiche war wie clientseitiges JavascriptDate.now()
Time.utc(2010, 05, 17)
quelle
time = Time.zone.now()
Es wird funktionieren als
quelle
Der richtige Weg ist, a zu tun
Time.now.getutc.to_i
, um den richtigen Zeitstempelbetrag zu erhalten, da die einfache Anzeige der Ganzzahl aufgrund von Zeitzonenunterschieden nicht immer mit dem utc-Zeitstempel übereinstimmen muss.quelle