这是对此问题的跟进: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而不是确切的时间一分钟的时间?
答案 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