Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

PHP 5.4 & MySQL 5.6 Grundkurs

Mit Datumsangaben rechnen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wenn Sie ermitteln wollen, auf welchen Tag ein bestimmtes Ereignis fällt, dann sollten Sie das mit Zeitstempeln berechnen. Wie das geht? Mit Hilfe der Funktion "mktime()".

Transkript

Sie wollen wissen auf welchen Tag Weihnachten 2015 fällt? Oer vielleicht eine Zeitdifferenz berechnen, oder ein Datum überprüfen? Auch das lässt sich mit PHP realisieren. Wollen wir beispielsweise ermitteln, auf welchen Tag jetzt Weihnachten 2015 fällt, so brauchen wir eine Möglichkeit ein bestimmtes Datum festzulegen. Das geht in PHP über einen Zeitstempel. PHP rechnet nämlich intern mit dem Zeitstempeln. Das sind die seit der Unixzeit - das ist der 1. Januar 1970 - vergangenen Sekunden. Um den Zeitstempel eines bestimmten Datums zu erzeugen, brauchen Sie "mktime" hier. Diese Funktion erwartet mehrere Parameter in einer bestimmten Reihenfolge, nämlich Stunde, Minute, Sekunde, Monat, Tag und Jahr. Also mit diesem Ausdruck hier habe ich den Zeitstempel von Weihnachten, oder streng genommen Heiligabend 2015, um 17:00 Uhr. Diesen Zeitstempel, den ich hier gewonnen habe, kann ich der Funktion "date" als zweiten Parameter hier übergeben. Wenn ich "date" nur einen Parameter übergebe, dann wird intern immer mit dem aktuellen Datum gerechnet. Aber ich kann hier auch einen zweiten Parameter übergeben, also einen anderen Zeitstempel. Dann habe ich ein Array definiert mit den Wochtentagen, und auf dieses Array kann ich hier zugreifen, um zu ermitteln, welcher Tag jetzt Heiligabend 2015 ist, und das wird dann hier auch ausgegeben. Schauen wir uns mal das Ergebnis an. Also der 24.12.2015 ist ein Donnerstag. Sie können mit PHP natürlich auch die Differenz zwischen zwei Daten ermitteln, also wieviel Zeit verstrichen ist. Hierzu habe ich einmal eine Funktion gebaut. Die schaut folgendermaßen aus. Sie sehen hier auch an den deutschen Namen, dass ist jetzt nicht eine Funktion von PHP, sondern eine, die ich selbst erstellt habe. Diese Funktion hier erwartet drei Parameter. Zuerst einmal die zwei Zeitstempel von den Daten, die ich vergleichen möchte. Und als drittes die Einheit, in der ich das Ergebnis haben möchte. In dieser Zeile hier wird erstmal die Differenz der beiden Zeitstempel ermittelt. Wir wollen als Ergebnis dann zum Beispiel haben, zwischen den beiden Terminen liegen 30 Tage. Es wäre jetzt ungewöhnlich zu sagen, zwischen den beiden Terminen liegen -30 Tage. Und um so etwas zu verhindern, habe ich hier die Funktion "abs" eingesetzt. Die sorgt dafür, dass das Ergebnis nicht negativ ist, sondern immer positiv. Hier wird dann ein Array erstellt, dass möglichen Einheiten mögliche Umrechnungswerte zuweist. Soll die Zeitdifferenz in Sekunden ausgegeben werden, so ist hier keine Umrechnung erforderlich, weil der Zeitstempel ja auch in Sekunden angegeben ist. Aber wenn ich Minuten haben möchte als Ergebnis, muss ich Umrechnungen durchführen. Ebenso, wenn die Einheit Stunden, Tage oder Wochen sein soll. Hier wird dann überprüft, ob die angegebene Einheit auch stimmt. Wenn die Einheit stimmt, dann wird die Umrechnung durchgeführt. Das heißt, die Differenz durch den je nach Einheit gewählten Faktor geteilt. Außerdem wird hierüber das Ergebnis abgerundet. Denn wir wollen nicht so etwas haben wie "die Differenz sind 1.3 Tage", sondern ein Tag in diesem Fall. Sie sehen dann hier, dass die Funktion getestet wird. Dafür wird über "mktime" hier erst einmal ein Timestamp von vorgestern erstellt. Das geht darüber, dass ich hier wieder die richtigen Parameter habe, also die Stunden, Sekunden und Minuten sind in diesem Fall alle null. Das hier ermittelt den aktuellen Monat. Hier dieses "intval" verwende ich, da "date" eigentlich ein String zurückliefert, aber hier mit einem Integer gerechnet werden soll. Und hier nehme ich den aktuellen Tag minus zwei, das heißt vorgestern. Außerdem brauche ich einen weiteren Zeitstempel oder Timestamp, mit dem ich das vergleichen kann. Und da nehme ich das heutige Datum, und den kann ich einfach ermitteln über "time". Jetzt habe ich hier meine beiden Zeitstempel und kann meine Funktionen aufrufen. Der Funktion übergebe ich dann den Zeitstempel von heute und den Zeitstempel von vorgestern, und sage ich möchte bitte als Einheit Tage ausgegeben haben. Ich erwarte natürlich hier das Ergebnis "2", dann wird, um es einmal zu testen, auch hier die beiden Zeitstempel vertauscht. Das Ergebnis soll ja trotzdem nicht negativ sein, sondern immer +2 Tage heißen. Schauen wir uns das einmal an. Genau, also ausgegeben wird immer "2", zwischen heute und vorgestern sind zwei Tage. Ebenfalls praktisch ist die Funktion "checkdate" in PHP. Diese können Sie nehmen, um zu überprüfen, ob es ein Datum auch gibt. Also nicht das jemand an irgendeiner Stelle, beispielsweise ein Benutzer in einem Formular, so etwas eingibt wie den 30. Februar. Dieses "checkdate" habe ich in diesem kleinen Beispiel eingebaut. Hier gibt es eine Funktion, die heißt "datumpruefen". Und die erwartet drei Parameter, nämlich ein Tag, ein Monat und ein Jahr. Zuerst einmal wird überprüft, sind das hier Zahlen? Denn sonst hat das weitere ja keinen Sinn. Und wenn das Zahlen sind, dann wird die PHP Funktion aufgerufen, "checkdate", und der diese Parameter übergeben. Wenn die übergebenen Sachen keine Zahlen sind, wird "return false" zurückgeliefert, und die Funktion auch damit beendet. Dann soll hier die Funktion aufgerufen werden, um zu schauen, ob Sie auch funktioniert. In dem ersten Fall wird hier ein String übergeben für den Tag. Das kann natürlich nicht stimmen. Hier sollte dann die Funktion auch zurückgeben: "Termin gibt es nicht". Wir wollen das auch gleich dann noch verändern. Schauen wir uns erstmal dieses Ergebnis an, von dem "checkdate". Wenn ich das jetzt hier aufrufe, dann kommt, richtig, "Termin gibt es nicht". Jetzt testen wir das Ganze einmal mit einem Datum, dass es auch gibt. Hier als erstes wird der Tag erwartet, also den 10. Februar 2009, den sollte es natürlich geben. Schauen wir uns jetzt hier einmal das Ergebnis an. Und richtig erscheint hier: "Termin gibt es". Wenn Sie in PHP mit Daten rechnen wollen, so brauchen Sie immer ein Zeitstempel. Deswegen ist es sehr nützlich hier mit "mktime" zu arbeiten, was Ihnen ein Zeitstempel generiert. Ebenfalls nützlich ist "checkdate" zur Überprüfung eines Datums, was Sie beispielsweise brauchen, wenn Sie mit Formularen arbeiten, und der Benutzer soll dort eigene Angaben machen.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!