在 symfony2 中获取两个日期时间之间的小时数


Get number of hours between two datetime in symfony2

我在Symfony 2中有两个日期时间格式的字段.现在我想在提交表单后获得总小时数

实体.php

 private $timein;
 private $timeout;
 public function setTimein($timein)
 {
 ......
 public function getWorkHour()
 {
    $hour1 = 0; $hour2 = 0;
    $date1 = $this->timein;
    $date2 = $this->timeout;
    $datetimeObj1 = new 'DateTime($date1);
    $datetimeObj2 = new 'DateTime($date2);
    $interval = $datetimeObj1->diff($datetimeObj2);
    if($interval->format('%a') > 0){
        $hour1 = $interval->format('%a')*24;
    }
    if($interval->format('%h') > 0){
        $hour2 = $interval->format('%h');
    }
    $hour = ($hour1 + $hour2) . " hours.";
    return $hour;
}

显示.html

 <th>No of Hour</th>
 <td>{{ entity.getWorkHour() }}</td>

这将引发错误

在呈现模板期间引发异常("DateTime::__construct() 期望参数 1 为字符串,对象给定")。

您如何简单地在同一日期获得两个小时之间的小时数?

你可以这样做

    $currentDate = new 'DateTime();
    $lastDate = new 'DateTime(); // your own date
    $diff = $currentDate->diff($lastDate);
    $hours = $diff->h;
    $hours = $hours + ($diff->days * 24);
    echo $hours;

您的错误意味着$this->timein$this->timeout不是字符串,因此请转储它们并检查您的代码(谁设置了它们等)。

至于日期之间的差异,您需要:

  • 将它们转换为时间戳

  • 获取它们之间的差异并将其转换为小时。

您必须编写自定义树枝扩展:

您必须按照此处所述编写一个 twig 函数,使用以下代码通过 php 函数进行差异:

$calcFrom = $from;
$calcTo = $to;
$diff = $now->diff($calcFrom);
$workHours = $diff->days * 24 + (int)$diff->format('%H');

并通过 Twig 扩展使其可用。另请参阅此处。

如果你使用的是symfony2框架,你可以使用KnpTimeBundle

在树枝上:与当前日期相比:

{# Returns something like "3 minutes ago" #}
{{ time_diff(form) }}

这与另一个日期相比:

{# Returns something like "3 minutes ago" #}
{{ time_diff(form , to ) }}

希望这个帮助