3天只有2天11个小时的路程?

时间:2014-03-17 19:43:11

标签: php date time

这是对此问题的跟进:Counting down days not showing the right number of days

我仍然对日期和时间感到困惑。

设置开始和结束时间:

// start date: set the time of when you click the link
$startTime = strtotime('now');
$plantStart = date('M d, Y h:i:s', $startTime);

// end date: 3 days from the time of when you click the link 
$date = strtotime("+3 day", $startTime);
$plantEnd = date('M d, Y h:i:s', $date);

这给了我:

2014年3月17日07:33:45(开始)

2014年3月20日07:33:45(结束)

现在,问题......当我这样做时:

// show how many days/hours till $plantEnd date

$d = new DateTime($plantEnd);
$daysHours = $d->diff(new DateTime())->format('%d Days, %H Hours');
echo $daysHours;

结果总是如下:2天,11小时从不3天0小时或2天23小时..是否仍然只是在第3天的时间到0:00而不是确切的时间一分钟的时间?

2 个答案:

答案 0 :(得分:1)

正如Yohann Tilotti在评论中提到的那样new DateTime()从未在diff()函数中初始化的问题。

你的意思是:$d->diff(new DateTime($plantStart))

您可以在此处查看正在运行的示例:http://ideone.com/FU8akb

答案 1 :(得分:0)

就像我评论的那样,坚持一种约会方法。首选方法为DateTime

$plantStart = new DateTime('now');
echo $plantStart->format('Y-m-d H:i:s');
// Output: 2014-03-17 12:56:00
$plantEnd = new DateTime('now + 3 days');
echo $plantEnd->format('Y-m-d H:i:s');
// Output: 2014-03-20 12:56:00
$daysHours = $plantEnd->diff(new DateTime())->format('%d Days, %H Hours');
echo $daysHours;
// Output: 3 Days, 00 Hours