php-resource.de

PHP Tutorial: Spielereien mit Zeit und Datum

Das Rechnen mit Datum und Zeit ist nur selten unproblematisch, PHP stellt uns dafür zahlreiche Funktionen zur Verfügung. Wir wollen uns im folgenden ein paar davon ansehen und an Beispielen erproben.

|09.04.2010 | Stephane | 26338 | KAT : PHP | | Kommentare 0


1

3

Ein Anfang mit time() und date()

Die formatierte Ausgabe von Zeit und der Vergleich verschiedener Zeitangaben ist immer wieder ein beliebtes Thema welches für viel "Freude" sorgt, besonders wenn Zeitangaben aus verschiedenen Quellen stammen und unterschiedlich formatiert sind.

Eine unverzichtbare, wenn auch nicht ganz unproblematische Hilfe bei Berechnungen oder Vergleichen ist die Unix-Zeit (siehe http://de.wikipedia.org/wiki/Unixzeit), eine absolute Angabe der vergangenen Sekunden seit dem 1.1.1970.
Während Zeitangaben aus Datenbanken, Formularergebnissen oder XML-Dateien sich oft vom Aufbau und Syntax her unterscheiden, bietet das Unix-Zeitformat eine absolute Angabe, mit der leichter gerechnet, verglichen und sortiert werden kann. PHP bietet mehrere einfache Funktionen um mit der Unix-Zeit zu arbeiten.

     
    echo time();
    echo date('d.m.Y', 1269351978);
    

"time()" liefert die aktuelle Unix-Zeit im Moment des Aufrufs zurück.
Mit "date()" kann eine Unix-Zeit fast beliebig in eine normal formatierte Zeit umgewandelt werden.
"date" erhält als ersten Parameter einen String mit dem die Formatierung der Ausgabe festgelegt wird. Als optionalen, zweiten Parameter kann eine Unix-Zeitangabe in der Form "date('String', optionale Zeitangabe als Unix-Zeit);" übergeben werden. Auf der Basis dieser optionalen Angabe wird das formatierte Datum generiert. Ist der zweite Parameter nicht gesetzt wird die aktuelle Zeit verwendet.

     
    Einige wichtige Parameter für eine formatierte Zeitangabe:
     
    d, Tag mit führender Null, sonst j
    m, Monat mit führender Null, sonst n
    y, Jahr, zweistellig
    Y, Jahr, vierstellig
     
    H, Stunden mit führender Null, sonst G
    i, Minuten mit führender Null
    s, Sekunden mit führender Null
     
    t, Anzahl der Tage des Monats
    z, Tag des Jahres
    w, Wochentag als 0-6 (Wochenbeginn ist mit 0 Sonntag)
     
    U, Unix-Zeit
     
    echo date('d.m.Y H:i:s').' entspricht '.date('U').' oder '.time();
    
    

Zeichen wie Punkt, Bindestrich, Leerzeichen können beliebig gesetzt werden. Um Wortzeichen als Literale zu verwenden, müssen diese in der bekannten Form escaped werden: "Hallo Welt". Sinnvoll ist dies natürlich nur bei kurzen Texten.

     
    echo date('Unix-Zeit: U');
    

Es gibt noch weitere Parameter für eine formatierte Ausgabe, die teilweise aber Ausgaben in englischer Sprache veranlassen. Wollen wir einen Wochentag oder einen Monat lesbar ausgeben, müssen wir dies bei der Verwendung von date() selbst berechnen.

     
    $Wochentag = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag',_
     'Freitag', 'Samstag');
    echo $Wochentag[date('w')];
     
    $Monat = array('0', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',_
    'August', 'September', 'Oktober', 'November', 'Dezember');
    echo $Monat[date('n')];
    

Der große Bruder von date(): getdate()

Werden mehrere Aspekte einer Zeitangabe verwendet, kann es sinnvoll sein die Funktion "getdate()" zu verwenden, die ausgehend von einer Unix-Zeit eine Vielzahl von Zeitwerten als ein Array zurückgibt.

     
    print_r( getdate() );
    

"getdate" kann optional eine Unix-Zeit übergeben werden auf deren Basis die Werte berechnet werden, ohne übergebene Unix-Zeit wird die aktuelle System-Zeit verwendet. Die berechneten Werte werden immer ohne führende Null dargestellt. Weitere Informationen zu getdate, welches an dieser Stelle der Einfachheit halber nicht verwendet wird, finden sie unter http://php.net/manual/de/function.getdate.php.

     
    Einige wichtige Ergebnisse von getdate: 
     
    'seconds', Sekunden
    'minutes', Minuten
    'hours', Stunden
    'mday', fortlaufender Tag des Monats
    'wday', Tag der Woche beginnend mit 0 für Sonntag
    'mon', Monat
    'year', Jahr, vierstellig
    'yday', fortlaufender Tag des Jahres
    0 oder '0', die Unix-Zeit
     
    $Zeit = getdate();
    echo $Zeit['mday'].'.'.$Zeit['mon'].'.'.$Zeit['year'];
    

Der große Bruder von time(): mktime()

Bisher haben wir lediglich die aktuelle Unix-Zeit mit time() erhalten. Um aus einer beliebigen Zeitangabe eine Unix-Zeit zu erhalten, benötigen wir die Funktion "mktime()", der wir beliebige Aspekte einer Zeitangabe von Sekunden bis zum Jahr übergeben.

     
    $Jahr = 2010; $Monat = 04; $Tag = 01; $Stunde = 12; $Minute = 0; $Sekunde = 0;
    echo (  mktime($Stunde,$Minute,$Sekunde,$Monat,$Tag,$Jahr) );
    
Navigation -> Seitenanzahl : (3)

   1 2 3  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
Stephane

Stephane

Status
Premium Mitglied

Beruf
Angestellter

Mitglied seit:
08.04.2010

letzte Aktivität
20.05.2010

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni