如何从彼此中减去2个日期?

时间:2011-12-01 13:52:29

标签: php date time mktime

我想从今天的日期减去将来的日期,我希望它显示目标日期之前的日期,小时和分钟。

这是我的代码

<?php

date_default_timezone_set('Europe/London');

$format = "h:i d";
$date = date($format);
$target = date($format, mktime(0,0,0,12,8,2011));

echo date($format, $target-$date);

?>

亲切的问候, 亚当

2 个答案:

答案 0 :(得分:5)

不要使用date进行操作,而是用于显示日期。而是减去2个时间戳:

...
$date = mktime(now...);
$target = mktime(0,0,0,12,8,2011);

echo date($format, $target - $date);

但你必须意识到时间戳始于1970年,并于2038年结束,因此,例如,2011年 - 2007年= 1974年。

在你的情况下更合适的是date_diff,正如@Kerrek SB在评论中所建议的那样。

示例(来自php.net):

$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days'); // +2 days

答案 1 :(得分:1)

也许这会对你有所帮助

<?php

$target = mktime (23, 34, 0, 9, 28, 2009);

$today = mktime();

$difference =($target-$today) ;

$days = $difference / 3600 / 24;
$difference = $difference - floor($days) * 3600 * 24;
$hours = $difference / 3600;
$difference = $difference - floor($hours) * 3600;
$minutes = $difference / 60;
echo "Days: ";
echo floor($days);
echo "<br />";
echo "Hours: ";
echo floor($hours);
echo "<br />";
echo "Minutes: ";
echo floor($minutes);

?>