2017-05-08 6 views
4

Eine API gibt einen Zeitstempel als UTC-Zeitstempel in UTC zurück, und ich würde gerne wissen, ob dieser Zeitstempel mehr als x Sekunden lang war. Wie erwartet, funktioniert das mit os.time() - x > timestamp in UTC, aber explodiert in anderen Zeitzonen.UTC-UNIX-Zeitstempel in Lua abrufen

Leider kann ich keinen guten Weg finden, dies in lua zu lösen.

os.date helfend hat den ! Präfix (z os.date("!%H:%M:%S")) Zeit in UTC zurück, aber es scheint, dass trotz der Dokumentation Hinweis, sie alle strftime Optionen unterstützen, ist dies nicht die %s Option nicht unterstützt. Ich habe gehört, dass Leute sagen, dass dies durch Lua-Kompilierzeitoptionen für ein ähnliches Problem verursacht wird, aber das Ändern ist nicht möglich, da der Interpreter vom Benutzer bereitgestellt wird.

Antwort

4

können Sie

os.time(os.date("!*t"))

verwenden, um die aktuellen UNIX-Epoche zu erhalten.

+0

ohh das macht sehr viel Sinn. Ich hatte es andersherum ausprobiert und konnte nichts Nützliches machen! – Atsch

+1

ein Hinweis zur Leistung: Dies ist etwa 500x langsamer als os.time() und Subtrahieren der Differenz. Da ich jedoch Bugs mit diesem Ansatz voraussehe und erwarte, dass max msg/sec etwa 200 sind, werde ich damit fortfahren. – Atsch

+0

Froh, dass Sie gemessen haben. – Joe