Given 2 dates, get the latest date.
Utilisateur anonyme
in php function f1(DateTime $t1, DateTime $t2) { //defining constants define("time1", $t1->format('r')); define("time2", $t2->format('r')); if(is_null($t1) || is_null($t2)) return; $changeT1 = true; //if no timezone was specified in the date, getTimeZone returns a default timezone $timezoneT1 = $t1->getTimeZone(); $timezoneT2 = $t2->getTimeZone(); //if false, then operation couldn't be performed if(!$timezoneT1 || !$timezoneT2) return; //now, we move $t1 to be in same timezone as $t2 //get the offset from T2 compared to T1 $offset = $timezoneT2->getOffset($t1); if(!$offset){ $offset = $timezoneT1->getOffset($t2); $changeT1 = false; } //if false, operation couldn't be performed if(!$offset) return; //convert this new offset to a date $intervalDate = DateInterval::createFromDateString((string)$offset . 'seconds'); $t1Helper = $t1; $t2Helper = $t2; //add offsetDate to T1 if $changeT1 is true, else, change T2 //and now T1 and T2 are in the same date / timezone if($changeT1) { $t1Helper->add($intervalDate); }else{ $t2Helper->add($intervalDate); } //compare without timezones if($t1Helper->format('Y-m-d H:i:s') === $t2Helper->format('Y-m-d H:i:s')) echo "Both dates are the same"; else{ //if $t2 is > than $t1, invert == 1, meaning it is bigger //we need to create a new date so we can get rid of Timezone $auxT2 = new DateTime($t2Helper->format('Y-m-d H:i:s')); $auxT1 = new DateTime($t1Helper->format('Y-m-d H:i:s')); $dateDiff = $auxT2->diff($auxT1); if($dateDiff->invert == 1) echo time2 . ' is bigger'; else echo time1 . ' is bigger'; } }