date_diff输出错误的值

时间:2013-06-15 12:52:33

标签: php datetime

$end=date_create("2013-07-30 00:30:33");
$now=date_create();
$x=date_diff($end,$now);
echo $x->format('%a days');

当我使用%a时,它返回45天,这是正确的,当我使用%d时,它返回15天。那里有什么问题?

2 个答案:

答案 0 :(得分:3)

数字15是根据月份差异计算的天数。

例如:(来自http://www.php.net/manual/en/dateinterval.format.php

<?php

$january = new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a will output the total number of days.
echo $interval->format('%a total days')."\n";

// While %d will only output the number of days not already covered by the
// month.
echo $interval->format('%m month, %d days');

?>

以上示例将输出:

总共31天

1个月,0天

答案 1 :(得分:1)

请注意,date_diff($end,$now);会返回DateInterval,并且它有自己的格式:

FROM PHP DOC

  

a = DateTime :: diff()或(未知)

的总天数

并且

  

d =天,数字

您在一个月内无法45 days因此基本上使用%d%m month %d days

45 days //or 
1 month 15 days