0
$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 天。那里有什么问题?

4

2 回答 2

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 天

于 2013-06-15T13:02:49.690 回答
1

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

来自 PHP 文档

a = 作为 DateTime::diff() 或(未知)结果的总天数

d = 天数,数字

您不能45 days在一个月内拥有,因此它基本上使用%d%m month %d days

45 days //or 
1 month 15 days
于 2013-06-15T13:04:36.423 回答