php DateTime表现得很奇怪



所以我有这段代码来确定数据库中当前时间和日期时间字段值之间的差异。

此代码为不在同一年份的日期提供奇怪的输出(下面的示例)。

$deadline      = new DateTime($someDeadline, new DateTimeZone('CET'));
$time_now      = new DateTime('NOW', new DateTimeZone('CET'));
$overdue_until = $time_now->diff($deadline);
echo $overdue_until->format('%R %d day/s, %h hours, %i minutes');

示例结果:

星期一 9th 二月 2015 05:28:23 PM 得到与当前时间的差值 + 28 天/秒, 17 小时, 6 分钟。

星期三 14th 一月 2015 11:28:43 AM + 2 天/秒, 10 小时, 34 分钟

%d最多可以让你使用31天。之后,它将重置为零,月份递增。如果你想要总天数,你需要使用%a

echo $overdue_until->format('%R %a day/s, %h hours, %i minutes');

演示 1演示 2

最新更新