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

标签 php symfony datetime twig

我的一个实体中的一个字段是“日期时间”变量。

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

这是一个代码片段:

{% 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;

这是我收到的错误消息:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class DateTime could not be converted to string in ...\app\cache\dev\twig\9b\ad\58fd3bb1517632badf1fdc7fa4a8.php line 33") in "BeerBundle:Games:gameTable.html.twig" at line 10.

最佳答案

虽然你可以使用

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

方法,请记住,此版本不支持用户区域设置,这对于仅由一个国家的用户使用的网站应该不是问题。国际用户应该显示完全不同的游戏日期,例如扩展 \DateTime 类,并为其添加一个 __toString() 方法来检查区域设置并采取相应措施。

编辑:

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

关于php - 如何在 Twig 模板中呈现 DateTime 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318914/

相关文章:

php - 使用 MySQL 直接从列的数据中获取列表

symfony - 使用映射的 false 和多个 true 验证 symfony 4 formfield 文件类型

php - Symfony 2 功能测试 : bypassing ssl

php - 表中数组排列

php - 重定向和引用

symfony - 分块上传验证: "The file could not be uploaded."

javascript - JavaScript 判断某年是否为闰年的方法

javascript - 使用 JavaScript 在单行中向 DateTime 添加天数

javascript - 使用 moment JS 格式化日期以匹配

php - 在 cookie 中为我的每个未登录用户提供唯一的 session ID