Wie die Zeit-Format von „2010-10-08 00.00.01“ auf „1286467201“ in awk umwandeln

StackOverflow https://stackoverflow.com/questions/3949390

  •  08-10-2019
  •  | 
  •  

Frage

In awk, Gibt es eine Möglichkeit, das Zeit-Format von „2010-10-08 00.00.01“ zu 1286467201
zu konvertieren wie Sie den Befehl „date“
mit $ Date +% s -d '2010-10-08 00.00.01'
1286467201

War es hilfreich?

Lösung

GNU awk hat eine mktime Funktion, die die Arbeit erledigen kann. Allerdings ist es wichtig, sich bewusst von Zeitzonen zu sein. Die Zeichenfolge „2010-10-08 00.00.01“ enthält nicht genügend Informationen für eine bestimmte Zeit zu definieren. Wenn Sie annehmen, dass es in UTC ist, können Sie tun:

$ echo 2010-10-08 00:00:01 | \
  TZ=UTC gawk '{ tstr=$1" "$2; gsub(/[\-:]/, " ", tstr); print mktime(tstr); }'
1286496001

Wenn Sie nicht über den TZ-Variable geben Sie mit der Server-Zeitzone am Ende (die UTC ohnehin sein sollte, aber eine Menge Leute benutzen lokale Zeit auf Servern, so dass es nicht eine sichere Annahme ist).

Sie können UTC Ausgabe ab Ihrem Befehl erhalten, indem es leicht zu ändern:

$ date +%s -u -d '2010-10-08 00:00:01'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top