-7

减去日期以查看某个固定日期事件的剩余时间的最佳方法是什么?例如,我想显示 2013 年 10 月 14 日某个遥远的未来事件还剩多少天。

好的

$now=strtotime(date("Y-m-d"));
$fix=strtotime(date("2013-10-14"));
$left=$fix-$now;
$left=date('d', $left);
echo "There are ".$left." days left";

问题是:它显示还剩 01 天。我认为我没有将时间戳格式化为数据格式。我对吗?

4

5 回答 5

3

您正在寻找date_diff

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
于 2013-07-16T22:18:06.290 回答
2

DateTime::diff

$now = new DateTime();
$fix = new DateTime("2013-10-14");
echo $now->diff($fix)->days.' days left';
于 2013-07-16T22:18:34.197 回答
0

尝试使用DateTime'sdiffformat方法,例如:

$now = new DateTime();
$then = new DateTime('2013-10-14');
echo $now->diff($then)->format('%d');

看:

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

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

于 2013-07-16T22:29:32.297 回答
0

您将差异视为绝对时间;如果您在date()函数中包含年份,它可能会显示 1970。

将秒转换为天的最简单方法可能就是除法:

$now = time();
$then = strtotime('2013-10-14');
$seconds_left  = $then-$now;
$days_left = $seconds_left/60*60*24;

并舍入或截断以满足您的需要。如需更复杂的操作,请查看DateInterval.

编辑显示获取当前时间比你正在做的更简单。

于 2013-07-16T22:18:27.767 回答
0

strtotime 为您提供一个以秒为单位的 unix 时间戳。由于 date 需要一个 unix 时间戳,因此您可以看到与纪元的秒数​​差异相关的日期。所以你的代码应该是:

$now=strtotime(date("Y-m-d"));
$fix=strtotime(date("2013-10-14"));
$left=$fix-$now;
$left = round($left/(3600*24));

echo "There are ".$left." days left";
于 2013-07-16T22:20:33.913 回答