PHP-Beispiele: Datum und Zeit
Datums- und Zeitangaben werden vom System als numerischer Wert behandelt. Damit sie für den Menschen verständlich werden, müssen sie umgewandelt werden. Umgekehrt muss eine Zeitangabe, die wir verstehen können, für das System in einen numerischen Wert gewandelt werden.Datum berechnen
Das heutige Datum ermittelt man mitdate()
. Beispiel:
echo date("d.m.Y");
Intern wird das Datum als Zahl behandelt. Um es für uns Menschen verständlich zu machen, muss es formatiert werden. In unserem Beispiel ist "d.m.Y" das Format. Diedate
-Funktion stellt dazu eine vielzahl von Buchstaben zur Verfügung, die jeweils durch einen bestimmten Datumswert ersetzt werden. So können z.B. einzeln das Jahr, der Monat, der Tag, die Stunde usw. ermittelt werden:
echo "Jahr: ".date("Y")."<br>";
echo "Monat: ".date("m")."<br>";
echo "Tag: ".date("d")."<br>";
echo "Stunde: ".date("H")."<br>";
echo "Minute: ".date("i")."<br>";
echo "Sekunde: ".date("s")."<br>";
date()
immer das aktuelle Datum an. Wenn ein anderes Datum verwendet werden soll, muss dieses als zweites Argument angegeben werden:
echo date("d.m.Y H:i", 1141081200);
// entspricht 28.02.2006 00:00
mktime()
, sie wandelt die Zahlen für Tag, Monat, Jahr usw. in einen Timestamp um:
echo date('Y-m-d H:i:s,mktime(12,13,14,2,28,2006));
// = 2006-02-28 12:13:14
mktime
-Funktion die Stunde, die Minute, die Sekunde, der Monat, der Tag und das Jahr übergeben (in dieser Reihenfolge) um daraus den entsprechenden Timestamp zu berechnen, der wiederum von date()
und anderen Funktionen verwendet werden kann.
Bestimmte Tage berechnen
Neben der Berechnung des Timestamps für ein Datum, kann diemktime
-Funktion aber noch mehr. Mit Ihr lassen sich auch Berechnungen anstellen. Beispiel:
$j = date('Y');
$m = date('m');
$d = date('d');
$morgen = date('d.m.Y',mktime(0,0,0,$m,$d+1,$j));
$gestern = date('d.m.Y',mktime(0,0,0,$m,$d-1,$j));
$monatserster = date('d.m.Y',mktime(0,0,0,$m,1,$j));
$monatsletzter = date('d.m.Y',mktime(0,0,0,$m+1,0,$j));
mktime
-Funktion beherrscht dabei auch Zahlen die nicht dem korrekten Datumsformat entsprechen. Wird also als Wert für den Tag die 32 angegeben, so rechnet mktime
dies automatisch auf den nächsten Monat um (also 01 bei 31 Tagen, bzw. 02. Bei Monaten mit 30 Tagen). Zu beachten ist hierbei, dass die 0 rechnerisch der -1 entspricht. Wie in der letzten Zeile des Beispiels zu sehen wird hier gerechnet: Aktueller Monat plus 1, plus Tag 0 (einen zurück), ergibt den letzten des aktuellen Monats.Auf diese Weise lassen sich alle Tage berechnen oder es lässt sich zählen:
$heute = time();
echo 'Die nächsten 30 Tage:<br>';
for($i=0; $i<31; $i++)
{
echo date('d.m.Y',mktime(0,0,0, date('m',$heute),
date('d',$heute)+$i, date('Y',$heute)));
echo '<br>';
}
Zeitdifferenzen berechnen
Soll eine Zeitdifferenz berechnet werden, verwendet man dazu üblicherweise den Timestamp zur Berechnung. Da der Timestamp die Zahl der Sekunden des Datums ab dem 01.01.1970 00:00 Uhr ist, besitzen also alle Datumswerte die gleiche Basis und lassen sich somit miteinander vergleichen ohne, dass auf Schaltjahre, Monatslängen oder dergleichen geachtet werden muss. Beispiel:$heute = mktime();
$jahr2010 = mktime(0,0,0,1,1,2010);
echo 'Noch '.round(($jahr2010-$heute) / (3600*24),0).
' Tage bis 2010';
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ WebDav-Client
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project