14

我保存了一个 created_at 日期,喜欢这个“2011-09-23 19:10:18”,我想知道日期到达之前的日期和时间。我怎么做?和数据库中的列名剩余天数每天自动更新剩余天数,请解决这个问题

4

6 回答 6

29

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 />";
?>

请注意,小时和没有分钟/秒的考虑意味着它可能会稍微不准确。

于 2011-09-19T17:28:12.957 回答
22

这应该为您的努力播下种子。

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";
于 2011-09-19T17:22:24.513 回答
19

从 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

于 2011-09-19T17:37:31.067 回答
1

它会像

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";
于 2011-09-19T17:24:34.660 回答
1

最简单的方法是来自 CountZero 的改进答案。我使用这个解决方案来计算报价到期前的剩余时间。除了前三行 CountZero 代码:

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

现在,您可以使用字符串函数来调节返回值、合并所有值或在值前添加“0”或“00”。

于 2015-05-26T19:55:25.173 回答
0

您可以使用 date() 函数找到当前日期和时间,然后减去

$x = 2011-09-23 - current_date

这会给你不。剩下的天数。

对时间也这样做..

希望这可以帮助

于 2011-09-19T17:25:03.543 回答