Die Epoche
In Unix und Linux werden Datumsangaben intern immer als die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00 Greenwhich Mean Time (GTM, heute UTC) dargestellt. Dieses Urdatum wird manchmal auch "The Epoch" genannt. In manchen Situationen muss man in Shellskripten die Unix-Zeit in ein normales Datum umrechnen und umgekehrt.
Das Datum umrechnen
Die Umrechnung geht in beiden Richtungen mit dem Befehl date
. Mit der Option -d
gibt man das darzustellende Datum an (sonst gibt date
die aktuelle Zeit aus). Eine Epochzeit wird einfach als Zahl mit einem vorangestellen Klammeraffen geschrieben. Im Februar 2009 war z.B. die 1234567890-te Sekunde seit der Epoche:
user@linux> date -d @1234567890
Sa 14. Feb 00:31:30 CET 2009
Conversely, you can convert a date into a Unix timestamp by using a +%s as the format specification for date
. Thus you will get the current time, for example:
user@linux> date +%s
Um eine bestimmte Zeit umzurechnen, muss man dieses wieder mit -d
angeben. Dabei sind verschiedene Darstellungen erlaubt. Für die Umrechnung des 18.12.2008 um 12:34 geben Sie an:
user@linux> date -d '2008-12-18 12:34:00' +%s
1229600040
Vergessen Sie dabei nicht, dass der Zeitstempel immer in UTC gerechnet - im Gegensatz zum ausgeschriebenen Datum, welches relativ zu Ihrer Zeitzone zu verstehen ist. Deswegen bekommt man in Deutschland auch -3600
Sekunden, wenn man den 1.1.1970 in Sekunden umrechnet:
user@linux> date -d '1970-01-01 00:00:00' +%s
-3600
Warum? Als es in Deutschland der 1.1.1970 um 00:00 war, war es in England noch 23:00 am Vortag.