You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twig日期过滤器问题:输出结果异常

解决Twig日期转换错误:从201801031400得到10/27/8364的问题

这个问题我之前也碰到过!核心原因是Twig的date过滤器默认会把数字类型的输入当作Unix时间戳来处理,而你传入的201801031400是一个格式为YmdHi的日期时间字符串(年份4位+月份2位+日期2位+小时2位+分钟2位),直接用过滤器的话,Twig会把这个数字当成时间戳解析,自然得到离谱的年份了。

下面给你两种可行的解决方案:

方案1:在PHP后端提前转换(推荐)

在Symfony的控制器或实体逻辑中,先把字符串转换成DateTime对象,再传递给Twig模板,这样Twig就能正确识别日期类型:

// 假设$startDate是你获取到的"201801031400"字符串
$startDate = '201801031400';
// 按照指定格式创建DateTime对象
$dateObj = \DateTime::createFromFormat('YmdHi', $startDate);

// 将处理后的日期对象传给模板
return $this->render('your_template.html.twig', [
    'val' => [
        'start_date' => $dateObj,
    ],
]);

之后在Twig模板中直接使用过滤器即可得到正确结果:

{{ val.start_date|date("m/d/Y") }}

方案2:直接在Twig模板中处理

如果不想修改后端代码,也可以在Twig里先把数字转为字符串,再指定输入格式让过滤器正确解析:

{{ val.start_date|string|date("m/d/Y", "YmdHi") }}

这里的两个关键步骤:

  • |string:把数字类型的日期转为字符串,避免Twig误判为时间戳
  • 第二个参数"YmdHi":告诉Twig输入字符串的格式,确保它能正确解析出日期

两种方法都能得到正确的输出01/03/2018,你可以根据自己的代码场景选择合适的方式。

内容的提问来源于stack exchange,提问作者Zaheer Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:32:27