Zeitstempel

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche

Zeitstempel/Timestamp

Ein Format für eine Zeitangabe. Es gibt die vergangenen Sekunden seit Mitternacht des 1. Januars 1970 UTC an. Ein solcher Zeitstempel ist z.b. 1251313292.

Für programmierte Berechnungen ist dieses Format deutlich einfacher zu handhaben als der Umgang mit einem Datum, Stunden, Minuten, Sekunden und so fort. Insbesondere weil die Monate eine unterschiedliche Anzahl von Tagen haben und auch Schaltjahre bei Berechnungen berücksichtigt werden müssen. Deshalb nutzen viele Programme wie auch GNOME und Firefox dieses Format für interne Berechnungen und ihre Einstellungsdateien.

$ date +%s

gibt dieses Datumsformat des aktuellen Zeitpunkts aus.

Um aus dem Format ein gewöhnliches Datum zu berechnen wird das Programm date mit folgenden Angaben ausgeführt:

$ date -ud@1251313292

Und

$ date -d '26 Aug  2009 19:01:32 UTC' +%s

ermittelt den Zeitstempel für ein bestimmtes Datum.

Zeitwerte sind im header <time.h> geregelt. In 32-Bit Systemen ist time_t eine ganze Zahl (<limits.h>)


Das kleinste darstellbare Datum ist der 1901-12-13 und das größte ist 2038-01-19. Am 2038-01-19 um 03:14:07 UTC endet diese Form der Darstellung und führt zu einem Programmfehler.

Siehe: http://en.wikipedia.org/wiki/Year_2038_problem

Nutzen wir eine 64-bit Zahl ist das Problem vorerst gelöst und wir in etwa 292 Milliarden Jahren, am Sonntag dem 4. Dezember wieder interessant; also 292.277.026.596 Anno Domini.

$ touch $Dateiname

aktualisiert die Zugriffs- und Änderungszeit einer Datei. Existiert die Datei nicht so wird sie ohne Inhalt angelegt.

Mittels

$ stat -c '%Y' $Dateiname

kann dieser "Zeitstempel" angesehen werden.

GAWK

Hier noch eine gawk-Zeile die ebenfalls das Format ändert:

gawk '{print strftime("%c", $0)}'

Das Prinzip:

$ date +%s | gawk '{print strftime("%c", $0)}'

Und die Beispiel-Zeit:

$ echo 1251313292 | gawk '{print strftime("%c", $0)}'


PHP

<?php
date_default_timezone_set('UTC');
echo time(), " - "; // Ausgabe des Zeitstempels in UTC
echo mktime(19, 01, 32, 8, 26, 2009), " - "; // Zeitstempel des bestimmten Tags ausgeben.
// ergibt unseren Beispielzeitstempel 1251313292
// Am Mittwoch, den 26.08.2009 19:01:32 UTC war der Zeitstempel genau 1251313292 
echo date("d.m.Y",1251313292)," - ",date("H:i",1251313292)," Uhr";
// Der Beispielzeitstempel aus Datum mit Uhrzeit
?>