tutorials.de-Buchverschenkaktion 08/2010
Thema geschlossen
  1. #1
    Registriert seit
    Aug 2002
    Ort
    be/ch
    Beiträge
    292
    Wer ein bisschen mit PHP gearbeitet hat, ist bestimmt schonmal über die Timestamps gestolpert. In diesem Tutorial beschäftigen wir uns ein bisschen mit dieser speziellen Zeitangabe. Ich werde dabei nicht wirklich in die Tiefen der Materie vorstoßen, sondern einfach ein paar Denkanstöße geben. Das Tutorial eignet sich so vor allem für Anfänger. Als fertiges Produkt des Tutorials haben wir dann eine PHP Datei welche ein Datum (optional auch Zeit) automatisch in einen Timestamp umrechnet.


    I. Erklärung
    Die offizielle Definition im PHP Manual (php.net) lautet:

    « Die seit Beginn der UNIX-Epoche (Januar 1 1970 00:00:00 GMT) bis jetzt vergangenen Sekunden »

    Ein Timestamp besteht also aus einer ganzen Zahl welche sich mit jeder verstrichenen Sekunde um 1 erhöht. Wenn ich diese Zeile schreibe, ist der Timestamp genau 1069748525. Am 1. Januar des Jahres 1970 wäre der Timestamp also 0 gewesen.


    II. Wozu Timestamps?
    Das fragt ihr euch wahrscheinlich nur wenn ihr noch nie ein Script mit Datumsfunktionen geschrieben habt. Timestamps sind zwar für unser menschliches Hirn zu abstrakt um ein Datum daraus zu erkennen, eignen sich aber hervorragend um mit Daten zu jonglieren.
    Schon mal probiert einen Countdown in PHP zu basteln? Mit Timestamps ein Kinderspiel. Sortieren nach Datum? Ohne Timestamps die reinste Qual.
    Da Datumsfunktionen oftmals reine Mathematik sind, ist es viel einfacher mit ganzen Zahlen zu arbeiten als mit einem Konstrukt aus Tagen, Monaten und Jahren.


    III. Funktionen
    Die wichigsten Funktionen welche wir benutzen um mit Timestamps zu arbeiten sind:
    time() - Gibt den aktuellen Timestamp zurück
    date() - Erzeugt aus einem Timestamp ein formatiertes Datum.
    mktime() - Erzeugt aus verschiedenen Angaben wie Tag, Stunde, Sekunde, Jahr einen Timestamp.
    Die Syntax dieser Funktionen findest du (wie bei allen PHP Funktionen) unter php.net


    IV.Anwendungen
    Wo können wir nun Timestamps verwenden? Ein Beispiel wäre sicher der klassische Countdown:

    PHP-Code:
    //Timestamp für den 17. Dezember 2003 erzeugen
    $timestamp_event mktime(0,0,0,12,17,2003 );
    //Sekunden errechnen welche noch verbleiben
    $seconds_left $timestamp_event time();
    echo 
    “$seconds_left bis zum “.date(“d.m.Y”$timestamp_event); 
    Ein weiteres Beispiel ist sicher das Sortieren von Datensätzen, z.B. in einer MySQL Datenbank. Einfach eine Spalte mit Timestamps zu den entsprechenden Einträgen anlegen und fortan mit folgendem Befehl nach Datum (Neuste zuerst) geordnet abzufragen:

    SELECT * FROM gb_entrys ORDER by entry_timestamp desc


    V.Timestamp errechnen
    Im Folgenden noch der Quellcode zu einem kleinen Script welches den Timestamp eines im Formular eingegebenen Datums errechnet.

    PHP-Code:
    <?php
    /* Date to Timestamp converter  */

    //FormularAusgabe: Gibt das Formular mit Werten (falls vorhanden) aus
    function outputForm($timestamp=0
    {
        echo 
    "<h2>Timestamp errechnen</h2>\n";
        if(!empty(
    $timestamp)){
            echo 
    "<p>Errechneter Timestamp: ".$timestamp."</p>\n";
        }
        echo 
    "<p>Geben Sie im untenstehenden Formular das Datum ein um den dazugeh&ouml;rigen Timestamp zu erhalten.</p>\n";
        echo 
    "<form name=\"timestamp\" method=\"post\">\n";
        echo 
    "<table>\n<tr>\n<td>Datum</td>\n<td><input type=\"text\" maxlength=\"10\" name=\"date\" value=\"";
        if(!empty(
    $timestamp)){
            echo 
    date("d.m.Y",$timestamp);
        }
        echo 
    "\"></td>\n<td></td>\n</tr>\n";
        echo 
    "<tr>\n<td></td>\n<td>Format: TT.MM.JJJJ</td>\n<td></td>\n</tr>";
        echo 
    "\n<tr>\n<td>Zeit</td>\n<td><input type=\"text\" maxlength=\"5\" name=\"time\" value=\"";
        if(!empty(
    $timestamp)){
            echo 
    date("H:i",$timestamp);
        }
        echo 
    "\"></td>\n<td>(optional)</td>\n</tr>\n";
        echo 
    "<tr>\n<td></td>\n<td>Format: HH:MM</td>\n<td></td>\n</tr>\n";
        echo 
    "<tr>\n<td></td>\n<td><input type=\"submit\" value=\"convert!\"></td>\n<td></td>\n</tr></table>\n</form>\n";
    }


    if(empty(
    $_POST['date'])) {
        
    outputForm();

    else {

        
    //Variablen definieren
        
    $datum $_POST['date'];
        
    $time $_POST['time'];
        
    $datum_werte explode(".",$datum);
        
    $zeit_werte explode(":",$time);

        
    //Timestamp generieren
        
    $timestamp mktime($zeit_werte[0], $zeit_werte[1], 0$datum_werte[1], $datum_werte[0], $datum_werte[2]);

        
    outputForm($timestamp);
    }
    ?>
    (Echo Befehle könnte man zusammenfassen, Ich weiss. Ich habs der Zeilenlänge zuliebe gesplittet).

    Das Script sollte eigentlich relativ einfach zu verstehen sein. Zu Beginn des Scripts definieren wir eine Funktion welche ein Formular ausgibt. Als Parameter wird lediglich ein Timestamp (optional) erwartet. Falls dieser Timestamp übergeben wird, erscheint dieser über dem Formular und in den Formularfeldern werden die Angaben vom eben diesem Timestamp errechnet.

    Soweit so gut. Nachdem die Funktion abgeschlossen ist wird mit einer if-Abfrage geprüft ob $_POST['date'] einen Wert enthält, falls nein, wird das Formular ausgegeben (Funktionsaufruf) andernfalls wird der Timestamp errechnet und erst dann das Formular ausgegeben.

    Wenn ihr die Datumsfunktionen kurz angeschaut habt (siehe Punkt III.) Sollte die Errechnung des Datums eigentlich selbstredend sein.

    Danke fürs Lesen!
    antihero
    Geändert von antihero (13.03.04 um 15:44 Uhr)

Ähnliche Themen

  1. timestamps und Monatsanzeige?!
    Von OmegaTCU im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 07.05.07, 22:44
  2. [Funktionssammlung] Timestamps
    Von flokli im Forum PHP
    Antworten: 0
    Letzter Beitrag: 02.07.06, 15:38
  3. Vergleich 2er Timestamps
    Von Philipp_Frank im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.10.05, 15:21
  4. 2 timestamps vergleichen
    Von Philipp_Frank im Forum PHP
    Antworten: 2
    Letzter Beitrag: 11.01.05, 16:30
  5. Kalender mit Timestamps erzeugen
    Von wal im Forum PHP
    Antworten: 3
    Letzter Beitrag: 29.10.04, 13:26

Lesezeichen

Lesezeichen