【问题标题】:how to calculate difference in hours including current day如何计算包括当天在内的小时差
【发布时间】:2017-10-05 03:44:32
【问题描述】:

datedatetime 格式。
我需要显示到某个日期还有多少小时

$st = $db->query("select ev, date from event where ev = 'ng'");
$row = $st->fetch();
$d1 = new DateTime($row['date']);
$d2 = new DateTime();
$diff = $d1->diff($d2);
$diff = $diff->days * 24; // result: 2088

所以这可行,但不计算当天的小时数。我试过了:

$diff = $diff->hours;

并收到通知:

Undefined property: DateInterval::$hours

有什么帮助吗?

【问题讨论】:

标签: php mysql datetime


【解决方案1】:

因为$diff->days 返回剩余天数,您可以将其乘以 24 来获得小时数,然后您只需添加当天剩余的小时数,所以基本上您在做什么,但只需将剩余小时数添加为总小时数

$st = $db->query("select ev, date from event where ev = 'ng'");
$row = $st->fetch();
$d1 = new DateTime($row['date']);
$d2 = new DateTime();
$diff = $d1->diff($d2);
// (days * 24) = hours + remaining hours
$hours = ($diff->days * 24) + $diff->h;

示例: 1 天 5 小时 = 29 https://3v4l.org/KDS9r

【讨论】:

    【解决方案2】:

    获得 diff 对象后,只需对其进行格式化,以便获取小时数

    $d1 = new DateTime($row['date']);
    $d2 = new DateTime();
    $diff = $d1->diff($d2);
    

    获取小时数

    echo ($diff->d * 24) + $diff->h
    

    【讨论】:

    • 谢谢,但如何只获得小时数,而不是天数加小时数?
    • @bonaca 我已经修改了答案
    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2022-06-10
    • 1970-01-01
    • 2021-10-28
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多