我在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 ) }}
希望这个帮助