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

DateIntervaldate_diff($end,$now);を返すことに注意してください。独自の形式があります。

PHPドキュメントから

a = DateTime::diff() または (不明) その他の結果としての合計日数

d = 日、数値

1か月で持つことはできない45 daysので、基本的には%dまたはを使用します%m month %d days

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