我下面的代码:PHP日期差异
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;
我不知道为什么我得到6015的结果。
我下面的代码:PHP日期差异
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;
我不知道为什么我得到6015的结果。
尝试像
$dStart = strtotime('2013-03-15');
$dEnd = strtotime('2013-04-01');
$dDiff = $dEnd - $dStart;
echo date('H:i:s',$dDiff);
或根据你的代码
$dDiff = $dStart->diff($dEnd);
$date->format('d',$dDiff);
echo $dDiff->days;
尝试,如果你在天想要用差异,这也
echo floor($dDiff/(60*60*24));
即将返回“01:01:00”我希望得到两天之间的天数差异 – carlosduarte
尝试编辑.. ?? plz – Gautam3164
明白了.. @ carlosduarte .. ?? – Gautam3164
试试这个 -
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->format('%d days')
检查PHP
请检查demo link
它返回+6015天也必须是一个PHP版本bug – carlosduarte
@carlosduarte:已更新的帖子和添加的链接phpfiddle:http://phpfiddle.org/main/code/7dq-mb7 –
在这个例子中,你添加任何日期...说更改它到2015年它总是返回17天 – utkarshk
使用本
$datetime1 = date_create('2013-03-15');
$datetime2 = date_create('2013-04-01');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
它返回+6015天可能是一个PHP错误? PHP版本5.3.1 – carlosduarte
可能会返回您的PHP版本的错误。我已经过测试,并且返回+17天。 –
我不明白PHP会怎么样,如果我回应(1363305600 - 1364857200)/(60 * 60 * 24)它返回-A.9583333333333 – carlosduarte
我更喜欢这样的:
function days_diff($first_date, $second_date)
{
$later = new DateTime($second_date);
$then = new DateTime($first_date);
return $later->diff($then)->format('a');
}
是的,这是唯一可以在PHP 5.3.1版本中工作的解决方案 – carlosduarte
如果差异超过1个月,这将不起作用。目前,你必须使用'$ interval-> format('a')'来获得两天之间的总天数(如果你期望范围永远超过1个月) –
@ColinMorelli谢谢!我已应用编辑。我使用这个功能没有问题,但我的情况总是在一个月内。 –
我得到了PHP 5.3.0同一6015天发现该解决方案使用var_dump()
。 我确切的代码是在这里:
$timestring = "Thu, 13 Jun 2013 14:05:59 GMT";
date_default_timezone_set('GMT');
$date = DateTime::createFromFormat('D, d M Y G:i:s T', $timeString);
$nowdate = new DateTime("now");
$interval = $date->diff($nowdate);
现在,如果我做了var_dump($interval)
,结果是:
object(DateInterval)#5 (8) {
["y"]=>
int(0)
["m"]=>
int(0)
["d"]=>
int(0)
["h"]=>
int(19)
["i"]=>
int(45)
["s"]=>
int(33)
["invert"]=>
int(0)
["days"]=>
int(6015)
}
于是小时(h
),分(i
)和秒(s
)设置正确,但是还有另一个属性days
,它在6015处保持不变,这就是其他人正在获得的错误。那么,我不明白它在哪里得到这个价值。再次,按照DateInterval
的PHP手册http://www.php.net/manual/en/class.dateinterval.php,我尝试将它们作为对象的属性进行访问,事情变得非常好。
因此,我通过得到确切的结果:
echo (string) $interval->d." days ago";
如果你抵消由一个日期发生什么呢?例如,请尝试'2013-03-16'和'2013-04-02'。 – cwallenpoole
如果我设置2013-03-16和2013-04-02我得到相同的值6015 – carlosduarte
我发现了错误#51184的报告https://bugs.php.net/bug.php?id=51184 – carlosduarte