重新編輯F:convertDateTime沒有按」修改所顯示的日期
我有一個字段‘LASTUPDATE’,這是日期類型的,並且其通常的getter/setter的bean。 我使用JPA將我的bean持久化到PostGreSql數據庫中。
我想有我LASTUPDATE保存在UTC,所以設置它之前,我設置時區:
Calendar calendar = DatatypeConverter.parseDateTime(text.toString());
calendar.setTimeZone(TimeZone.getTimeZone("Europe/Zurich"));
doiPool.setLastUpdate(calendar.getTime());
所以,如果LASTUPDATE是「2013年8月2日12時17分05秒」 (歐洲/蘇黎世),在數據庫我有「2013-08-02 10:17:05」(UTC),這是我想要的。
當我顯示回來的日期時,我也希望根據我的時區,所以我想我可以使用f:convertDateTime並設置timeZone =「xxx」。
...
<f:facet name="header"> #{msg.dashboardColumnLastUpdate} </f:facet>
<h:outputText value="#{dashboardDoiPoolRow.doiPool.lastUpdate}">
<f:convertDateTime pattern="yyyy-MM-dd HH:mm" timeZone="Europe/Zurich"/>
</h:outputText>
...
閱讀其他的答案,我試圖設置
javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE
過,但結果總是相同的:通過顯示我得到2013的日期-0-08-02 10:17:05而不是2013-08-02 12:17:05。
我認爲如果轉換器能正常工作,如果我想根據我的時區顯示2013-08-02 10:17:05(UTC),設置我的時區(歐洲/蘇黎世),我應該得到2013-08-02 12:17:05
我想念什麼?
在DB中,該列的類型是「無時區的時間戳」。它有一些效果嗎?
我不知道你的'setLastUpdate()'是如何有意義的。結果是**始終**與輸入相同。 DB本身的時區不是簡單的錯誤? – BalusC
Hi BalusC,我編輯了我的問題,修復了set方法的代碼。但正如我所說,我仍然得到錯誤的時間... – Francesco