我在Symfony 2中有两个带日期时间格式的字段。现在我希望在提交表单后获得总时数
entity.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;
}
show.html
<th>No of Hour</th>
<td>{{ entity.getWorkHour() }}</td>
这会抛出错误
在渲染模板期间抛出异常(“DateTime :: __ construct()期望参数1为字符串,对象给定”)...
您如何在同一天的两个小时之间获得小时数?
答案 0 :(得分:0)
您的错误意味着$this->timein
或$this->timeout
不是字符串,因此请转储它们并检查您的代码(设置它们的人等)。
至于日期之间的差异,您需要:
将它们转换为时间戳
获取它们之间的差异并将其转换为数小时。
答案 1 :(得分:0)
您必须编写自定义树枝扩展名
您必须使用以下代码编写一个twig函数,如here所述,通过php函数进行make diff:
$calcFrom = $from;
$calcTo = $to;
$diff = $now->diff($calcFrom);
$workHours = $diff->days * 24 + (int)$diff->format('%H');
并通过Twig extension提供。另见here。
如果您使用的是symfony2框架您可以使用KnpTimeBundle
在树枝上: 这与当前日期进行比较:
{# Returns something like "3 minutes ago" #}
{{ time_diff(form) }}
这与另一个日期比较:
{# Returns something like "3 minutes ago" #}
{{ time_diff(form , to ) }}
希望这个帮助
答案 2 :(得分:0)
您可以这样做
$currentDate = new \DateTime();
$lastDate = new \DateTime(); // your own date
$diff = $currentDate->diff($lastDate);
$hours = $diff->h;
$hours = $hours + ($diff->days * 24);
echo $hours;