【问题标题】:What causes date difference in PHP / Symfony2?是什么导致 PHP / Symfony2 中的日期差异?
【发布时间】:2023-06-26 23:22:01
【问题描述】:

我有一个关于日期时间的非常奇怪的问题。存储在数据库中的日期时间在表单中显示为有效,但正常打印时出现错误。

这是我的列数据:

delivery_date = datetime type
value = 2015-11-06 13:00:00 (Y-m-d H:i:s)

这是我的表单数据:

$builder->add('delivery_date', 'date', ['label' => 'Teslim', 'widget' => "single_text"]);

输出:

打印代码:

<tr>
    <td>Sipariş Tarihi</td>
    <td>{{ order.createdAt|date("d F Y, l, H:i")|format_date("dd MMMM y, EEEE, HH:mm") }}</td>
</tr>
<tr>
    <td>Teslim Tarihi</td>
    <td>{{ order.deliveryDate|date("d F Y, l")|format_date("dd MMMM y, EEEE") }}</td>
</tr>
<tr>
    <td>Son Güncelleme</td>
    <td>{{ order.updatedAt|date("d F Y, l, H:i")|format_date("dd MMMM y, EEEE, HH:mm") }}</td>
</tr>
<tr>
    <td>Son Hareket</td>
    <td>{{ order.movements.last.createdAt|date("d F Y, l, H:i")|format_date("dd MMMM y, EEEE, HH:mm") }}</td>
</tr>

输出:

名为“teslim tarihi”的第二行是错误的。在表格中它是正确的,因为天是 06,但打印的天是 05。其他行具有相同的列类型“日期时间”。不过暂时没有问题。

顺便说一句;

  • 我已经启用了国际扩展
  • php版本是旧的稳定版5.5.30
  • 时区是欧洲/伊斯坦布尔。
  • 为 Symfony 使用 SonataIntlBundle。
  • Os:Centos,日期命令有效(现在输出:Sun Oct 25 15:35:52 EEST 2015)。

造成这种差异的原因是什么?

【问题讨论】:

  • 为什么在date 过滤器之后使用format_date 过滤器?这必须失败..
  • 不。一定是这样的兄弟。

标签: php symfony datetime intl


【解决方案1】:

链接这两个过滤器是无稽之谈。以一种方式格式化日期是没有意义的,只是在之后直接将其转换为不同的格式。如果是关于打印月份名称等,您可以使用Intl Extension 中的localizeddate 过滤器。

【讨论】: