Php получить, сколько дней и часов осталось с даты

У меня есть сохраненная дата created_at, нравится это "2011-09-23 19:10:18" И я хочу получить дни и часы, оставшиеся до достижения даты. Как я могу это сделать? и имя столбца в базе данных оставшихся дней автоматически обновляется ежедневно с оставшимися днями, пожалуйста, решите эту проблему


person John123    schedule 19.09.2011    source источник


Ответы (6)


Фрагмент PHP:

<?php

//Convert to date
$datestr="2011-09-23 19:10:18";//Your date
$date=strtotime($datestr);//Converted to a PHP date (a second count)

//Calculate difference
$diff=$date-time();//time returns current time in seconds
$days=floor($diff/(60*60*24));//seconds/minute*minutes/hour*hours/day)
$hours=round(($diff-$days*60*60*24)/(60*60));

//Report
echo "$days days $hours hours remain<br />";
?>

Обратите внимание, что круговой час и отсутствие учета минут/секунд означает, что это может быть немного неточным.

person Rudu    schedule 19.09.2011
comment
этот должен ответить на заданный вопрос. спасибо, мне тоже помогло - person od3n; 22.12.2011
comment
Так есть ли вероятность того, что минуты остались или нет ?? - person SenTisso; 11.05.2018
comment
@SenTisso да. Переключите $hours, чтобы использовать floor вместо round, вычтите $hours из $diff (как с $days, чтобы найти $hours), разделите полученную сумму на 60 и округлите (чтобы получить минуты) /*...*/$secondsPerHour=60* 60; $ секунд в день = 60 * 60 * 24; $days=floor($diff/$secondsPerDay); $diff-=$days*$secondsPerDay; $hours=floor($diff/$secondsPerHour); $diff-=$часы*$секунды в час; $минуты=раунд($diff/60); - person Rudu; 19.05.2018

Это должно положить начало вашим усилиям.

getdate(strtotime("2011-09-23 19:10:18"))

Полное преобразование:

$seconds = strtotime("2011-09-23 19:10:18") - time();

$days = floor($seconds / 86400);
$seconds %= 86400;

$hours = floor($seconds / 3600);
$seconds %= 3600;

$minutes = floor($seconds / 60);
$seconds %= 60;


echo "$days days and $hours hours and $minutes minutes and $seconds seconds";
person Korvin Szanto    schedule 19.09.2011

начиная с PHP 5.3.0 вы можете использовать встроенный объект Date:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

http://www.php.net/manual/en/book.datetime.php

person CountZero    schedule 19.09.2011
comment
Мне просто интересно, какие параметры я могу использовать. Вот ответ: php.net/manual/en/ - person Almino Melo; 18.05.2015

это было бы что-то вроде

echo $date = date("Y-m-d H:i:s");echo "\n";

$original=time($date);


$modified = "2011-09-23 19:10:18";

echo date("Y-m-d H:i:s",$modified);echo "\n";
person ahoura    schedule 19.09.2011

Самый простой способ — улучшенный ответ от CountZero. Я использовал это решение для счетчика времени, оставшегося до истечения срока действия предложения. Дополнение к первым трем строкам кода CountZero:

$days = $interval->d;
$hours = $interval->h;
$minutes = $interval->i;
$seconds = $interval->s;

И теперь вы можете использовать строковые функции для модерации возвращаемых значений, для объединения всех или добавления «0» или «00» перед значениями.

person Vladimir Veljkovic    schedule 26.05.2015

Вы можете найти текущую дату и время, используя функцию date(), а затем вычесть

$x = 2011-09-23 - текущая_дата

это даст вам нет. осталось дней.

Сделайте то же самое со временем..

Надеюсь это поможет

person Viral    schedule 19.09.2011