Die verwandte Frage lautet "Datetime To Unix-Zeitstempel" , diese Frage ist jedoch allgemeiner.
Ich benötige Unix-Zeitstempel, um meine letzte Frage zu lösen . Meine Interessen sind Python, Ruby und Haskell, aber andere Ansätze sind willkommen.
Was ist der einfachste Weg, um Unix-Zeitstempel zu generieren?
unix
unix-timestamp
Léo Léopold Hertz 준영
quelle
quelle
gettimeofday
ist der POSIX- und Linux- Systemrufname : stackoverflow.com/questions/11765301/… TODO: Warumstrace date +%d
nicht anrufen?Antworten:
Unter Linux oder MacOS können Sie Folgendes verwenden:
wo
+%s
, Sekunden seit 1970-01-01 00:00:00 UTC. (GNU Coreutils 8.24 Datumshandbuch)Beispielausgabe jetzt 1454000043.
quelle
date
normalerweise in POSIX.2 definiert./usr/bin/date +%s and
/ usr / xpg4 / bin / date +% s`. In Kombination mit der POSIX.2-Empfehlung funktioniert dies meiner Meinung nach auch unter allen Solaris.date -v+60S +%s
hinzufügen: 1 Tag hinzufügen:date -v+24H +%s
und so weiter. . .in Ruby:
quelle
Time.zone.now.to_i
. Es wird zwar das gleiche O / P geben wieTime.now.to)_i
aberTime.zone.now.to_i
ist derRails
Weg../bin/rails runner "p Time.current.to_i"
ist eine andere Lösung.Fügen Sie in Python die folgenden Zeilen hinzu, um einen Zeitstempel zu erhalten:
quelle
curl icanhazepoch.com
Grundsätzlich handelt es sich um Unix-Zeitstempel als Service (UTaaS)
quelle
curl -L -H "Accept: application/json" unixtimesta.mp
wird Ihnen geben{"datetime":"Thu, 19 Jul 2018 12:01:21 GMT","timestamp":1532001681}
In Perl:
quelle
Der Unix-Befehl 'Datum' ist überraschend vielseitig.
Nimmt die Ausgabe von
date
, die in dem durch -f definierten Format vorliegt, und druckt sie dann in der Form +% s, Sekunden seit der Epoche, aus (-j sagt, versuchen Sie nicht, das Datum festzulegen).quelle
date: invalid option -- 'j'
wo (GNU Coreutils 8.24 Datumshandbuch)
+%s
, Sekunden seit 1970-01-01 00:00:00 UTC+%N
, Nanosekunden (000000000..999999999) seit der EpocheBeispielausgabe jetzt
1454000043.704350695
. Ich bemerkte, dass das BSD-Handbuch vondate
keine genaue Erklärung über die Flagge enthielt+%s
.quelle
+$N
? Ist es in einigen Systemen im UNIX-Zeitstempel enthalten?%N
Ihrer Information, die Manpage für das Datum in macOS 10.13.1 (High Sierra) ist nicht dokumentiert und funktioniert nicht. Die Beispielausgabe, die ich erhalten habe, ist :1523342391.N
.gdate
in Homebrew apple.stackexchange.com/a/135749/181223Zuallererst ist die Unix-Epoche oder Nullzeit 1970-01-01 00: 00: 00Z (dh Mitternacht des 1. Januar 1970 in der Zeitzone Zulu oder GMT oder UTC). Ein Unix-Zeitstempel ist die Anzahl der Sekunden seit dieser Zeit - ohne Berücksichtigung von Schaltsekunden.
Das Generieren der aktuellen Zeit in Perl ist ziemlich einfach:
Das Generieren der Zeit, die einem bestimmten Datums- / Zeitwert entspricht, ist weniger einfach. Logischerweise verwenden Sie die
strptime()
Funktion von POSIX. Das Perl POSIX :: strptime-Modul (das vom POSIX-Modul getrennt ist) hat jedoch die folgende Signatur:Die Funktion
mktime
im POSIX-Modul hat die Signatur:Wenn Sie also das Format Ihrer Daten kennen, können Sie eine Variante schreiben über:
quelle
Der Vollständigkeit halber PHP:
In BASH:
quelle
date
Befehl, daher denke ich nicht, dass es notwendig ist, PHP von dort aus aufzurufen.in Haskell
in Go
in C.
in Swift
quelle
In Haskell ...
So geben Sie es als POSIXTime-Typ zurück:
Als Ganzzahl:
quelle
quelle
Versuchen wir es mit JavaScript :
... oder noch schöner, der statische Ansatz:
In beiden Fällen dividiere ich durch
1000
, um von Sekunden auf Millis zu wechseln, und ich verwendeMath.floor
nur ganze Sekunden, die vergangen sind ( im Vergleich zur Rundung, die auf eine ganze Sekunde aufrunden kann , die noch nicht vergangen ist).quelle
milliseconds
keine Sekunden zurück und der Unix-Zeitstempel ist die Anzahl derseconds
seit dem 1. Januar 1970 00:00 UTC verstrichenen. Sie können JS verwenden, teilen Sie einfach durch 1000 und runden Sie:Math.round(Date.now()/1000)
Math.floor
stattdessen für entschieden habeMath.round
. ProstWenn Sie einen Unix-Zeitstempel aus einem Shell-Skript benötigen (Bourne-Familie: sh, ksh, bash, zsh, ...), sollte dies auf jedem Unix-Computer funktionieren, anders als bei den anderen Vorschlägen (Perl, Haskell, Ruby, Python, GNU-Datum) ) basiert es auf einem POSIX-Standardbefehl und einer POSIX-Standardfunktion.
quelle
In Bash 5 gibt es eine neue Variable:
Oder wenn Sie eine höhere Genauigkeit (in Mikrosekunden) wünschen:
quelle
Wenn ich utc date time mit dem Befehl date drucken möchte, muss ich das Argument -u mit dem Befehl date verwenden.
Beispiel
Ausgabe
quelle
nawk:
quelle
Öffnen Sie mit NodeJS einfach ein Terminal und geben Sie Folgendes ein:
node -e "console.log(new Date().getTime())"
odernode -e "console.log(Date.now())"
quelle