1

DateTimeオブジェクトを出力しようとすると、文字通りフォーマットが出力されます。

Y-m-d H:i:s

コード

$db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');
$dbTime = new DateTime(current($db->query('SELECT NOW()')->fetchAll(PDO::FETCH_COLUMN, 0)));
$myTime = new DateTime();
$diff = $myTime->diff($dbTime);
echo $diff->format('Y-m-d H:i:s');

他の質問や例を読むと、これはうまくいくはずなので、なぜそうでないのか混乱しています。

4

2 に答える 2

5

DateTime::diffメソッドはオブジェクトを返しますDateIntervalDateIntervalオブジェクトの実装とは異なるオブジェクトの format を呼び出しているため、予期しない結果が得られDateTimeます。使用方法の詳細については、 http://php.net/manual/en/dateinterval.format.phpを参照してください。

于 2012-12-13T21:08:04.977 に答える
3

DateTime::diff()からの出力は DateInterval オブジェクトであり、書式設定の意味がかなり異なります。特に、オーバーフローについて読んでください。% 記号を使用してフォーマット文字を強制することにも注意してください。そうしないと、文字列文字として扱われます。

于 2012-12-13T21:08:06.783 に答える