Wie die Zeit-Format von „2010-10-08 00.00.01“ auf „1286467201“ in awk umwandeln
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
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'