Здесь я делаю модуль задачи, теперь я хочу отслеживать временную шкалу, здесь у нас есть две даты
Используя эти две даты, я хочу отследить их временную шкалу. Предположим, что до установленного срока я выполнил свою задачу, значит, я хочу показать зеленый цвет, и сколько дней и сколько часов я выполнил его, я хочу отобразить, так же, предположим, что он отложил свою временную шкалу. означает, что я хочу показать красный цвет и сколько дней и сколько часов я закончил его, я хочу показать
я пытался, но он не работает должным образом
date_default_timezone_set('Asia/Kolkata');
$due_on = '2017-12-28 09:00 PM';
$start_ex = explode(" ", $due_on);
$start = $start_ex[0].' '.$start_ex[1];
$completedON ='2017-12-28 09:39 AM';
$datetime1 = date_create($start);
$datetime2 = date_create($completedON);
$interval = date_diff($datetime1, $datetime2);
echo $time_diff= $interval->format('%R%a days %h hours');
Обновленный код
date_default_timezone_set('Asia/Kolkata');
$compltedOn ='2017-12-28 09:39 PM';//2016-04-17 10:00 AM
$dueDate ='2017-12-28 09:00 PM';//2016-04-17 07:51:30 PM
$datetime1 = date_create($compltedOn);
$datetime2 = date_create($dueDate);
$interval = date_diff($datetime1, $datetime2);
echo $time_diff= $interval->format('%R%a days %h hours %i minuts');//-0 days 0 hours 39 minuts 0 seconds
Две проблемы:
Вы удаляете индикатор PM из времени начала, поэтому date_create будет рассматривать его как утреннюю дату, а затем сравнивать со второй датой — возвращая разницу в минутах.
ты используешь echo $time_diff= $interval->format('%R%a days %h hours');
так что меняй это $time_diff= $interval->format('%R%a days %h hours');
echo $time_diff;
Измененный код:
date_default_timezone_set('Asia/Kolkata');
$compltedOn ='2017-12-28 09:39 PM';//2016-04-17 10:00 AM
$dueDate ='2017-12-28 09:00 PM';//2016-04-17 07:51:30 PM
$datetime1 = date_create($compltedOn);
$datetime2 = date_create($dueDate);
$interval = date_diff($datetime1, $datetime2);
$cls = ($interval->invert == 1 ) ? "red" : "green";
$time_diff= "<span class='{$cls}'>".$interval->format('%R%a days %h hours %i minuts')."<span>";
echo $time_diff;
Других решений пока нет …