计算未显示正确天数的天数

时间:2014-03-16 23:42:25

标签: php date

我需要帮助..这是对的吗?

开始日期:2014年3月16日

结束日期:2014年3月19日

结果:2天

$plantEnd = get_the_author_meta('plantEnd', $sellerID );
$plantStart = get_the_author_meta('plantStart', $sellerID );

$future = $plantEnd;

$d = new DateTime($future);
echo $d->diff(new DateTime())->format('%a').' Days';

为什么说2天?不是3天吗?我很困惑..

2 个答案:

答案 0 :(得分:2)

由于您并未在代码中使用$plantStart而是使用当前时间,因此您现在(脚本运行的时间,服务器和#39)之间基本上有所不同。 ; s时区)和2014年3月19日开始(0h:0m:0s)。那么你真正获得的东西就像2天5小时3分25秒(取决于你运行它与服务器时间的时间。

例如,当我在本地运行时:

$d->diff(new DateTime())->format('%d:%H:%i:%s');

我得到2:04:59:25

所以还有更多的东西,而不仅仅是那个" 2"返回..你只是没有格式化它。

而且,您实际上并未在任何地方使用$plantStart。所以,如果你这样做:

<?php
$plantEnd = '2014-03-19';//get_the_author_meta('plantEnd', $sellerID );
$plantStart = '2014-03-16'; //get_the_author_meta('plantStart', $sellerID );

$future = $plantEnd;

$d = new DateTime($future);
echo $d->diff(new DateTime($plantStart))->format('%d:%H:%i:%s');
?>

您会看到它输出3:00:0:0(或者您可以继续使用%d并获取&#34; 3&#34;)。这是因为$plantStart(可能是基于您的帖子)只是指定yyyy-mm-dd,因此只传递yyyy-mm-dd值会将hh:mm:ss置于0:0:0(开头)当天),这将是一整天的计算,其结果是&#34;四舍五入&#34;到了一整天的增量。

答案 1 :(得分:1)

我有一种感觉,它实际上是2天,几个小时,几分钟,或者是那种效果。因为您只是做几天的格式化,所以您会失去细微差别。我将代码更改为&#34; 2.4天&#34; (对于我的生活,我无法记住我过去是如何做到这一点的......)

编辑:过去我只使用date()而不是DateTime()。

我做了一些研究,你可能想要format('%d')." Days";