$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 日が返されます。そこで何が問題なのですか?
数字の 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日
DateIntervaldate_diff($end,$now);
を返すことに注意してください。独自の形式があります。
a = DateTime::diff() または (不明) その他の結果としての合計日数
と
d = 日、数値
1か月で持つことはできない45 days
ので、基本的には%d
またはを使用します%m month %d days
45 days //or
1 month 15 days