我正在开发一个(基本的)Symfony网络应用程序。
我有一个@var \DateTime @ORM\Column(name="Data", type="date")
属性的实体,我需要将不完整的日期存储为2017-01-00
和2017-00-00
。到目前为止一切都很好。
问题是{{ myentity.mydata|localizeddate('medium', 'none', 'en' ) }}
将它们呈现为Dec 31, 2016
并且分别为。 Nov 30, 2016
;相反,我想得到Jan, 2017
和resp。 2017
。
我做错了什么,或者是树枝无法处理这种情况?你看到了快速的出路吗?
注意:问题不是localizeddate
,date('d M Y')
也是误导。
编辑
现在,我认为这个问题可以追溯到mysql和PHP。请查看以下屏幕截图,它们显示了php如何将2017-00-00
转换为Nov 30, 2016
。我看到有人有出路(this post),但我不知道如何在我的Symfony应用程序中使用后者。
其中formatDatabaseDate($date, $delimiter = '/')
来自this post
thks mario
答案 0 :(得分:0)
我已经创建了一个twigfiddle来向您展示过滤器date('M, Y')
应该适合您:
这是我使用的代码:
{% set mydate = '2017-07-31 09:46:10' %}
{{ mydate|date('M, Y') }}
虽然这并未解决storing
作为不完整日期的问题。为此,您需要向我们展示一些代码。
如果你必须使用Intl Extension,那么我认为第五个参数是日期格式。 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 %}
您只需使用切片根据需要获取day
和month
值。看到这个新的twigfiddle尝试一下。更改set mydate
字符串以查看if语句是否正常工作:
编辑#3 - 基于评论
在树枝中你会像这样格式化和切片:
{{ myDate|date('Y-M-D H:I:S')|slice(5,2) }}