php - mySQl 与 PHP(和 Twig),部分日期不完整,渲染错误(2017 年 1 月 00 日为 2016 年 12 月 31 日)

标签 php mysql date

我正在开发一个(基本)Symfony Web 应用程序。 我有一个具有 @var\DateTime @ORM\Column(name="Data", type="date") 属性的实体,我需要将不完整的日期存储为 2017-01 -002017-00-00。到目前为止一切顺利。

问题是 {{ myentity.mydata|localizeddate('medium', 'none', 'en' ) }} 将它们呈现为 Dec 31, 2016和分别。 2016 年 11 月 30 日;相反,我只想获取 Jan, 2017 和 resp。 2017

我做错了什么,还是twig无法处理这种情况?你有快速的出路吗?

注意:问题不在于 localizeddate,也在于 date('d M Y') 渲染错误。

编辑

现在,我确实认为问题可以追溯到 mysql 和 PHP。请检查以下屏幕截图,它们显示了 php 如何将 2017-00-00 转换为 Nov 30, 2016。我看到有人有出路( this post ),但我不确定如何在我的 Symfony 应用程序中使用后者。

mysql

php

其中 formatDatabaseDate($date, $delimiter = '/') 来自 this post

results

谢谢马里奥

最佳答案

我创建了一个 twigfiddle 来向您展示过滤器 date('M, Y') 应该适合您:

https://twigfiddle.com/155jb9

这是我使用的代码:

{% set mydate = '2017-07-31 09:46:10' %}
{{ mydate|date('M, Y') }}

尽管这并没有解决存储作为不完整日期的问题。为此,您需要向我们展示一些代码。

如果您必须使用Intl Extension ,那么我认为第5个参数是日期格式。 Twigfiddle 不具备这种能力。所以我认为你的代码会是这样的:

{{ myentity.mydata|localizeddate('none', 'none', 'en', 'GMT', 'M, Y' ) }}

也许你可以尝试一下?

<小时/>

编辑 #2 - 基于评论

如果你想要的话,你应该让你的帖子更清楚,但是我更新了我的 twigfiddle (新的)来满足你的要求。你可以像这样编码:

{% if day == '00' and month == '00' %}
    {{ mydate|date('Y') }}
{% elseif day == '00' and month != '00' %}
    {{ mydate|date('M, Y') }}
{% else %}
    {{ mydate|date('D M Y') }}
{% endif %}

您只需使用切片即可根据需要获取daymonth 值。请参阅这个新的 twigfiddle 来尝试一下。更改 set mydate 字符串以查看 if 语句是否有效:

https://twigfiddle.com/r9m3j3

<小时/>

编辑 #3 - 基于评论

在 twig 中,您可以像这样格式化和切片:

{{ myDate|date('Y-M-D H:I:S')|slice(5,2) }}

关于php - mySQl 与 PHP(和 Twig),部分日期不完整,渲染错误(2017 年 1 月 00 日为 2016 年 12 月 31 日),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420414/

相关文章:

php - 如何使用 Codeigniter 创建自定义页面,而不是作为 Controller

php - 获取包含文件中当前 PHP 脚本的名称

php - 警告 : mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql. socks )中

mysql - 此 INSERT SQL 查询中的错误是什么?

mysql - 打印日期不正确

php - Zend中的分页不起作用

php - Joomla 中的 mysql 下一个和 orderby 中的上一个 SQL 语句

mysql - 来自现有数据库的 seed_fu

java - java日期对象默认的Jsonb序列化格式是什么

php - 如何将数据分组为从周一到周日开始的周