Я пытаюсь получить разницу между двумя объектами DateTime в PHP, и ответ кажется неправильным. Как вы можете видеть, функция diff() дает разницу во времени 4 часа и 41 минуту, но разница во времени явно намного ближе к 7 часам.PHP datetime diff wrong
$eastern_tz = new DateTimeZone("US/Eastern");
$now = new DateTime("now", $eastern_tz);
$future_date = new DateTime($future_date_string); //'2011-05-11 12:00:00'
$future_date->setTimezone($eastern_tz);
$interval = $future_date->diff($now);
var_dump($now);
var_dump($future_date);
var_dump($interval);
return $interval->format($format); //"%d days, %h hours, %i minutes, %s seconds"
// DEBUG информация
object(DateTime)[483]
public 'date' => string '2016-06-15 09:18:41' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'US/Eastern' (length=10)
object(DateTime)[484]
public 'date' => string '2016-06-15 14:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'US/Eastern' (length=10)
object(DateInterval)[479]
public 'y' => int 0
public 'm' => int 0
public 'd' => int 0
public 'h' => int 4
public 'i' => int 41
public 's' => int 19
public 'weekday' => int 0
public 'weekday_behavior' => int 0
public 'first_last_day_of' => int 0
public 'invert' => int 1
public 'days' => int 0
public 'special_type' => int 0
public 'special_amount' => int 0
public 'have_weekday_relative' => int 0
public 'have_special_relative' => int 0
ну, ваша информация DEBUG показывает, что значение $ future_date не является значением, которое вы утверждаете в качестве вставки. Вы уверены, что значение, которое вы предоставляете в $ future_date_string, является правильным? – Tularis
В соответствии с значениями, указанными в информации об отладке, ответ правильный! –