397 Stimmen

Wie konvertiert man in der Bash Zeitstempel in Daten?

Ich brauche einen Shell-Befehl oder ein Skript, das einen Unix-Zeitstempel in ein Datum umwandelt. Die Eingabe kann entweder über den ersten Parameter oder über stdin erfolgen, so dass die folgenden Verwendungsmuster möglich sind:

ts2date 1267619929

y

echo 1267619929 | ts2date

Beide Befehle sollten "Wed Mar 3 13:38:49 2010" ausgeben.

0voto

Brad Parks Punkte 59613

Das folgende Skript ist zwar keine reine Bash, aber es konvertiert Zeitstempel der Länge 13 in einer Zeichenkette mit Hilfe von Perl in das entsprechende Datum in Ihrer lokalen Zeitzone

zeitstempel_zu_datum.sh

#!/usr/bin/env bash
IT=$(cat /dev/stdin)
re='(.*)([0-9]{13})(.*)'
while [[ $IT =~ $re ]]; do
  TIMESTAMP=${BASH_REMATCH[2]}
  AS_DATE=$(echo "$TIMESTAMP" | perl -pe 's/([\d]{10})([\d]{3})/localtime $1/eg;')
  IT="${IT/$TIMESTAMP/$AS_DATE}"    
done
echo "$IT"

Eingabe

{"timestamp":"1573121629939","level":"DEBUG","thread":"http-nio-15372-exec-3","logger":"org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor"}

Ausgabe

$ cat input | timestamp_to_date.sh

{"timestamp":"Thu Nov  7 06:13:49 2019","level":"DEBUG","thread":"http-nio-15372-exec-3","logger":"org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor"}

-15voto

Lucas Punkte 2959

In PHP

$unix_time = 1256571985;

echo date("Y-m-d H:i:s",$unix_time)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X