PHP – Datum berechnen

Mit PHP das Datum von gestern ermitteln:

$date = date('Y-m-d', time() - 86400);

Die aktuelle Zeit nehmen, davon 86400sec abziehen (entspricht 24h) und dann in das gewünschte Datumsformat casten.

Update: Besser geht das Ganze allerdings über folgendes Codesnippet:

$date = '2012-05-11';
date('Y-m-d', strtotime('-1 days', strtotime($date)));

Update 2:
Wenn ihr auf einen Wochentag bspw. 3 Werktage addieren wollt, funktioniert das analog zur oben beschriebenen Funktion:

$date = '2013-09-05';
date('Y-m-d', strtotime('+3 weekdays', strtotime($date)));

Weitere Funktionalitäten zu strtotime() findet ihr hier:
http://www.php.net/manual/de/datetime.formats.relative.php

PHP Datumsumwandlung von 05.04.12 in 2012-04-05

Beim Konvertieren von Datumsangaben in PHP kann es, vorrausgesetzt man macht es nicht wohlüberlegt, schon einmal zu der einen oder anderen Überraschung kommen.

Möchte man beispielsweise das Datum 05.04.12 einfach per

$date = date('Y-m-d', strtotime('05.04.12'));

konvertieren, dann bekommt man häufig das aktuelle Datum ausgegeben. Warum ist das so? Meiner Meinung nach, liegt das daran, dass PHP das Datum nicht korrekt in einen Timestamp auflösen kann. Es kann also nicht automatisch ermittelt werden, was hier Tag, Monat und Jahr sein soll. Bei einem Datum 05.04.2012 ist das allerdings kein Problem. Da kann strtotime() den korrekten Timestamp problemlos extrahieren.

Wie sieht ein möglicher Lösungsansatz aus?

$dateTemp = explode('.', '05.04.12');
$date = date('Y-m-d', mktime(0, 0, 0, $dateTemp[1], $dateTemp[0], $dateTemp[2]));

Somit erhält man das gewünschte Datum. Wichtig kann das werden wenn man nicht nur ein statisches Datum, wie in diesem Fall hat, sondern die Datumsangabe bspw. per Variable übergeben wird.