Здесь я делаю оставшееся время в городе, например, предположим, что событие запускает 2018-04-18 04:30 PM. Предположим, что текущее время - 2018-04-18 04:10 PM, означает, что я хочу отображать как осталось 20 минут, я с кодом, но он показывает неправильный результат
Мой код PHP:
<?php
date_default_timezone_set('UTC');
date_default_timezone_set('Asia/Kolkata');
function timeAgo($logintime)
{
$start_date = new DateTime($logintime);
$since_start = $start_date->diff(new DateTime(date("Y-m-d h:i:s")));//2018-04-18 04:10 PM
if ( intval($since_start->format('%Y') ) >= 1){
$timeago = $since_start->format('%Y years');
}
else if (intval($since_start->format('%m')) >= 1){
$timeago = $since_start->format('%m months ');
}
else if (intval($since_start->format('%a')) >= 1){
$timeago = $since_start->format('%a days ');
}
else if (intval($since_start->format('%h')) >= 1){
$timeago = $since_start->format('%h hours ');
}
else if (intval($since_start->format('%i')) >= 1){
$timeago = $since_start->format('%i minutes ');
}
else if (intval($since_start->format('%s')) >= 1){
$timeago = $since_start->format('%s seconds ');
}
return $timeago;
}
echo timeAgo('2018-04-18 04:30 PM');
?>
Я получаю такой результат
12 часов
Мой ожидаемый результат
Осталось 20 минут






Просто укажите только сейчас DateTime. Вы не хотите объявлять формат времени. И вы просто используете этот часовой пояс только date_default_timezone_set('Asia/Kolkata');. Вот код:
date_default_timezone_set('Asia/Kolkata');
function timeAgo($logintime)
{
$start_date = new DateTime($logintime);
$since_start = new DateTime();
$interval = $since_start->diff($start_date);
$timeago = $interval->format("%a days, %h hours, %i minutes, %s seconds");
if ($since_start < $start_date){
return $timeago. ' ago';
}else{
return 'This Event Passed';
}
}
echo timeAgo('2018-04-19 05:50 PM');
Выход:
1 days, 0 hours, 56 minutes, 28 seconds ago
Почему вы держите эту часть в ответе? date_default_timezone_set('UTC'); date_default_timezone_set('Asia/Kolkata');, вы должны знать, что второй перезапишет первый?
@ Андреас, я хочу отобразить день и час, в нашем случае ответ должен быть таким 0 days and 11 minutes , как это сделать
Ответ отредактирован @SaguK Пожалуйста, проверьте сейчас
Возможный дубликат Как рассчитать разницу между двумя датами с помощью PHP?