Оставшееся время через два раза

#php #mysql #time

#php #mysql #время

Вопрос:

у меня есть time data в базе данных, я записываю время с помощью time() функции (значение 1551866538) в базе данных, и я хочу записать оставшееся время php на 1 день, но как 24 часа. Я пытаюсь date_diff() выполнить функцию, но каждый раз получаю ошибку, спасибо за помощь.

 $mysqltime = $data->registerdate; // 1551866538
$now = time();

$remainingtime = $now - $mysqltime; // I want show as hour
  

Комментарии:

1. Где ваш код? Что вы уже пробовали?

2. я добавил свой код.

3. Вы просто пытаетесь отформатировать секунды в часах: минутах?

4. Если разница составит более 24 часов, то вы хотите показать дни?

5. я хочу показать вот так: «Время восстановления 4 часа 21 мин.». По окончании оставшегося времени «Время истекло»

Ответ №1:

Вы также можете использовать DateTime класс, как показано ниже:

 $today      = new DateTime('now');
$tomorrow   = new DateTime(date('Y-m-d H:i:s', '1551866538'));
$difference = $today->diff($tomorrow);

echo $difference->format('%h hours %i minutes remaining');
  

Вывод

 1 hours 42 minutes remaining
  

Комментарии:

1. Спасибо, Амит, лучший ответ, я запускаю этот код именно так, как я хочу.

2. Теперь я понял, что это расчетное время, пожалуйста, объясните, как показать оставшееся время на 24 часа назад.

3. Хорошо, я решаю эту проблему. Я заменил этот код следующим образом.. $tomorrow = новая дата-время(date(‘Y-m-d H: i:s’, ‘1551866538’ 60 * 60 * 24));

Ответ №2:

 <?php 

// Declare and define two dates 
$date1 = strtotime("2016-06-01 22:45:00");  
$date2 = strtotime("2018-09-21 10:44:01");  

// Formulate the Difference between two dates 
$diff = abs($date2 - $date1);  


// To get the year divide the resultant date into 
// total seconds in a year (365*60*60*24) 
$years = floor($diff / (365*60*60*24));  


// To get the month, subtract it with years and 
// divide the resultant date into 
// total seconds in a month (30*60*60*24) 
$months = floor(($diff - $years * 365*60*60*24) 
                               / (30*60*60*24));  


// To get the day, subtract it with years and  
// months and divide the resultant date into 
// total seconds in a days (60*60*24) 
$days = floor(($diff - $years * 365*60*60*24 -  
             $months*30*60*60*24)/ (60*60*24)); 


// To get the hour, subtract it with years,  
// months amp; seconds and divide the resultant 
// date into total seconds in a hours (60*60) 
$hours = floor(($diff - $years * 365*60*60*24  
       - $months*30*60*60*24 - $days*60*60*24) 
                                   / (60*60));  


// To get the minutes, subtract it with years, 
// months, seconds and hours and divide the  
// resultant date into total seconds i.e. 60 
$minutes = floor(($diff - $years * 365*60*60*24  
         - $months*30*60*60*24 - $days*60*60*24  
                          - $hours*60*60)/ 60);  


// To get the minutes, subtract it with years, 
// months, seconds, hours and minutes  
$seconds = floor(($diff - $years * 365*60*60*24  
         - $months*30*60*60*24 - $days*60*60*24 
                - $hours*60*60 - $minutes*60));  

// Print the result 
printf("%d years, %d months, %d days, %d hours, "
     . "%d minutes, %d seconds", $years, $months, 
             $days, $hours, $minutes, $seconds);  
?>
  

Вывод:

 2 years, 3 months, 21 days, 11 hours, 59 minutes, 1 seconds
  

Ссылка

Комментарии:

1. Идея более или менее правильная, но если разница очень мала, она покажет 0 лет, 0 месяцев….

2. Вы можете установить условие if для проверки 0 лет / месяцев.

3. я не отформатировал время, мои данные в базе данных 1551866538, я знаю, что должен преобразовать эти данные, но я этого не сделал, а ваш код очень длинный, он должен быть очень коротким таким образом.

Ответ №3:

 $mysqltime = $data->registerdate; // 1551866538
$now = time();

$remainingtime = $now - $mysqltime;
echo $hours = round($remainingtime / (60 * 60)); // hours
  

Комментарии:

1. При этом не будут отображаться минуты. Оно будет округлено до ближайшего часа.

2. я не могу понять переменную $datediff.

3. неправильный код echo $ hours = round($remainingtime / (60 * 60));