Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP日期_create()上的细枝异常_Php_Symfony_Twig - Fatal编程技术网

PHP日期_create()上的细枝异常

PHP日期_create()上的细枝异常,php,symfony,twig,Php,Symfony,Twig,我想根据她的生日计算一个选民的年龄,在我的实体中,我创建了这样一个函数 <td>{{ entity.getAge() }}</td> //www.php public function getAge() { $birthday = $this->birthday; $age = date_diff(date_create($birthday),date_create('today'))->y; return $age; } 我把这个

我想根据她的生日计算一个选民的年龄,在我的实体中,我创建了这样一个函数

<td>{{ entity.getAge() }}</td>
//www.php

public function getAge()
{
    $birthday = $this->birthday;
    $age = date_diff(date_create($birthday),date_create('today'))->y;
    return $age;
}
我把这个画成这样

<td>{{ entity.getAge() }}</td>
{{entity.getAge()}
但它显示了以下错误:

“在第32行的DuBundle:voctors:index.html.twig中呈现模板时引发异常(“警告:date_create()预期参数1为字符串,对象给定”)。”

如何纠正这个问题?我在Symfony 1.4中的老项目中使用了这个Php模板,它可以毫无问题地呈现投票者的当前年龄

在旧版Symfony 1.4中,我使用这种方式

<td><?php echo date_diff(date_create($total->birthday), date_create('today'))->y; ?></td>

如果您的
$birth
字段是
DateTime
对象,则可以使用以下方法:

public function getAge()
    {
        if (!$this->birthday) return "";// put here what you want if no birthdayprovided
        $now = new \DateTime('now');
        return $now->diff($this->birthday)->format("%y");
    }   

希望此帮助

在方法中返回$age->y,您应该有一个整数。date_diff的返回是一个错误,我已经尝试了这个解决方案,但是我得到了这个错误“在呈现模板的过程中引发了一个异常(“警告:DateTime::diff()期望参数1是DateTimeInterface,给定null”)似乎$Birth是null,在这种情况下可以做什么?数据库中的日期格式是“1978-09-05”。因此,在编辑我的orm并将生日字段更改为“日期”类型后,使用您提供的示例代码,我得到以下代码“无法将数据库值“1978-09-05”转换为条令类型的datetime。预期格式:Y-m-d H:I:s”好的,那么数据库中有一个字符串吗?我们可以根据格式转换它,奇怪的是,你的问题中有一个基于对象的错误…@DanielleRoseMabunga检查我的更新,检查Y/m/d是否是正确的日期格式,或者你使用的是不同的格式。希望这有帮助