2017-12-20 8 views
3

Ich bin gespannt, wie diese seltsamen Zeitstempel in Ruby zu analysieren:Wie werden Zeitstempel ausgewertet, die als 64-Bit-Integer im Little-Endian-Format mit Ruby übergeben werden?

566455139129676 
566455199011666 
566455199892825 
566455259010949 
566455319010859 
566455335000847 
566455336000936 
566455336127533 
566455347898055 

Hier ist, was ich über das Format dieser Zeitstempel kennen:

Der Wert ist eine 64-Bit-Integer in little- Endian-Format mit der Anzahl der Mikrosekunden seit dem Julianischen Tag: 01. Januar 2000 00:00:00 in der UTC-Zeitzone .

Für die Neugierigen, sind diese interne Darstellung des Vertica von Zeitstempel: https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/AdministratorsGuide/BinaryFilesAppendix/ColumnDefinitions.htm

Jede Hilfe am meisten geschätzt werden würde.

Antwort

3

Nicht wirklich sicher, was Endianess hier mit irgendetwas zu tun haben würde. Du hast schon eine ganze Zahl.

Also Epoch ist 01.01.2000? Im Grunde müssen Sie nur Unterschiede zwischen den Epochen, 1969-12-31 und ihre berücksichtigen ...

epoch = Time.new(2000, 1, 1) 

epochOffset = epoch.to_i - Time.at(0).to_i; 

ts = Time.at((566455347898055/1000000) + epochOffset) 

print ts.strftime "%Y-%m-%d %H:%M:%S %z"; 

> 2017-12-13 04:42:27 +0000 
+0

Vielen Dank! Genau das habe ich gebraucht! – twneale

Verwandte Themen