Php получить сколько дней и часов осталось от даты - PullRequest
10 голосов
/ 19 сентября 2011

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

Ответы [ 6 ]

25 голосов
/ 19 сентября 2011

Фрагмент 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 />";
?>

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

19 голосов
/ 19 сентября 2011

Это должно привести к вашим усилиям.

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";
16 голосов
/ 19 сентября 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

1 голос
/ 26 мая 2015

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

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

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

1 голос
/ 19 сентября 2011

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

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";
0 голосов
/ 19 сентября 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...