Ich kann ja gar nicht glauben, dass die Frage auf den if
Befehl zielte...
Hinweis vorweg: Um einen String in ein Datum zu konvertieren, muss man ihn nicht manuell ins Y-m-d Format umstellen. Unterschiedliche Formate verstehen kann die DateTime Klasse mit einer statischen Factory-Methode selbst.
$d_von = DateTime::createFromFormat('d.m.Y', $p_von);
if ($d_von === FALSE)
{
// Fehlerbehandlung für ungültiges Datum
}
Eine Methode, um den Date-Anteil eines DateTime auf Objekt-Ebene zu isolieren, gibt es nicht - oder ich kenne sie nicht :). Es gibt nur date_parse, um einen String in Elemente wie Tag, Monag und Jahr zu zerlegen. Dann kannst Du die Datumsteile einzeln vergleichen. Das ist aber sehr umständlich. Einfacher und sicherlich auch schneller ist es, wenn Du beide Datümer mit dem gleichen Format in Strings umwandelst und diese Strings vergleichst.
Wenn Du - irgendwoher - sicher sein kannst, dass $p_von bereits im d.m.Y format ist (d.h. exakt 10 Stellen, 2 Stellen Tag, Punkt, 2 Stellen Monat, Punkt, 4 Stellen Jahr), dann kannst Du Dir für den Vergleich das Parsen von $p_von auch schenken. Statt dessen erzeugst Du Dir ein DateTime Objekt für den aktuellen Tag, addierst 2 Tage drauf, formatierst das mit d.m.Y als String und vergleichst den direkt mit $p_von. Aber wie gesagt - das setzt voraus dass auf anderem Wege das korrekte Format von $p_von sichergestellt ist.
Rolf