2017-07-31 30 views
0

我正在開發一個(基本的)Symfony web應用程序。 我有一個@var \DateTime @ORM\Column(name="Data", type="date")屬性的實體,我需要將未完成的日期存儲爲2017-01-002017-00-00。到現在爲止還挺好。mySQl與PHP(和Twig),部分日期不完整,錯誤呈現(2017-01-00,2016年12月31日)

問題是,{{ myentity.mydata|localizeddate('medium', 'none', 'en') }}呈現他們爲Dec 31, 2016和RESP。 Nov 30, 2016;相反,我想只得到Jan, 2017和resp。 2017

我做錯了什麼,或者是枝條無法處理這種情況?你看到一個快速出路嗎?

注意:問題不是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

THKS馬里奧

回答

0

我創建了一個twigfiddle向您展示了過濾器date('M, Y')應該工作ÿ歐:

https://twigfiddle.com/155jb9

這是我使用的代碼:

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

如果你只是用切片爲需要得到daymonth值。看到這個新的twigfiddle嘗試一下。更改set mydate串看到if語句工作:

https://twigfiddle.com/r9m3j3


編輯#3 - 基於評論

在枝杈你會格式化和切片,像這樣:

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

你的答覆,但我沒有解釋我自己。我有數百個日期,其中大部分完成,有些不完整(2017-01-00,2017-00-00))。我需要以完整的方式呈現完整的D M Y;不完整的只有M,Y(當D是00)或Y(當D和M都是00時)。 – mario

+0

增加了編輯#2。試試看。您可能需要按照您的設計修改代碼。 –

+0

@ Alvin提供您的幫助。當然,當然,儘管我希望它在樹枝中被硬編碼。也許最後一點:你知道爲什麼2017-01-00被提交爲2016年12月31日; 2017-00-00作爲2016年11月30日,而不是說2017年1月1日? thsk – mario

相關問題