如何在 Twig 模板中呈现 DateTime 对象

2022-08-30 06:14:15

我的一个实体中的一个字段是“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;

这是我收到的错误消息:

在呈现模板期间(“可捕获的致命错误:类 DateTime 的对象无法转换为 ...\app\cache\dev\twig\9b\ad\58fd3bb1517632badf1fdc7fa4a8.php第 33 行”)中的字符串)位于“BeerBundle:Games:gameTable.html.twig”的第 10 行。


答案 1

虽然您可以使用

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

方法,请记住,此版本不遵循用户区域设置,这对于仅由一个国籍的用户使用的网站来说应该不是问题。国际用户应该显示完全不同的游戏日期,例如扩展类,并向其添加一个检查区域设置并采取相应行动的方法。\DateTime__toString()

编辑

正如@Nic在评论中指出的那样,如果您使用Twig的Intl扩展,您将有一个可用的过滤器,该过滤器在用户的区域设置中显示日期。通过这种方式,您可以放弃我以前的扩展想法。localizeddate\DateTime


答案 2

您可以使用日期过滤器:

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

推荐