【问题标题】:php DateTime acting weirdphp DateTime 行为怪异
【发布时间】:2014-12-12 02:31:46
【问题描述】:

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

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

$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');

示例结果:

2015 年 2 月 9 日星期一 05:28:23 PM 得到差值 + 28 天/秒,距当前时间 17 小时 6 分钟。

2015 年 1 月 14 日星期三上午 11:28:43 + 2 天/秒,10 小时 34 分钟

【问题讨论】:

  • 时区 CET 出于向后兼容性的原因而存在,不应使用。见PHP page

标签: php datetime date-math


【解决方案1】:

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

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

Demo 1 Demo 2

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2017-08-29
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2014-09-30
    相关资源
    最近更新 更多