我的一个实体中的一个字段是一个“datetime”变量。

如何将此字段转换为字符串以在浏览器中呈现?

下面是一个代码片段:

{% for game in games %}
    ...
        <td> {{game.gameTeamIdOne.teamName}} </td>
        <td> {{game.gameTeamIdTwo.teamName}} </td>
        <td> {{game.gameDate}}</td>
    </tr>
{% endfor %}

下面是我的实体类中的变量:

/**
 * @var date $gameDate
 *
 * @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
 */
private $gameDate;

这是我得到的错误信息:

在渲染“BeerBundle:Games:gameTable.html”中的模板(“可捕获的致命错误:类DateTime的对象无法转换为字符串……\app\cache\dev\twig\9b\ad\58fd3bb1517632badf1fdc7fa4a8.php第33行”)时抛出了一个异常。第10行。


当前回答

你可以使用日期过滤器:

{{ game.gameDate|date("m/d/Y") }}

其他回答

你可以使用日期过滤器:

{{ game.gameDate|date("m/d/Y") }}

虽然你可以用

{{ game.gameDate|date('Y-m-d') }}

方法,请记住,此版本不尊重用户区域,对于仅由一个国籍的用户使用的站点,这应该不是问题。国际用户应该显示完全不同的游戏日期,如扩展\DateTime类,并添加__toString()方法来检查地区和相应的行动。

编辑:

正如@Nic在评论中指出的,如果你使用Twig的Intl扩展,你将有一个localizeddate过滤器可用,它在用户的地区显示日期。这样您就可以放弃我以前扩展\DateTime的想法。

{{game.gameDate | date('c')}}  // 2014-02-05T16:45:22+00:00

完整的日期时间字符串,包括时区偏移。

有一个symfony2工具可以显示当前地区的日期:

{{ user.createdAt|localeDate }} to have a medium date and no time, in the current locale

{{ user.createdAt|localeDate('long','medium') }} to have a long date and medium time, in the current locale

https://github.com/michelsalib/BCCExtraToolsBundle

你可以用以下方法渲染

{{post. publhed_at |date("m/d/Y")}}

欲了解更多详情,请访问http://twig.sensiolabs.org/doc/filters/date.html