在Web應用程序的用戶可以選擇被傳遞到日曆窗口小部件的timezone
屬性的時區:Primefaces日曆的時區處理到固定後端時區
<p:calendar value="#{curValue}" timeZone="#{settingsBL.getTimeZoneIdSet()}" />
在輔助bean的交付日期被轉換爲服務器的時區(JBoss在我的CEST中)。後端需要與UTC一樣的日期和時間(並以UTC遞送)。 因此,當我存儲日期時,我必須將CEST日期轉換爲UTC並保存它。如果日期是從後端傳遞的,那麼它就是UTC。我必須將其轉換爲系統默認值(帶有CEST的JBoss),日曆會小心地在客戶端上正確顯示。 這是正確的嗎?我對此有點困惑。服務器時區是可變的,不能很難設置爲UTC或其他。 我的例子中,客戶端的日期總是轉換爲CEST。無論我在web.xml中設置爲javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE
。
我使用primefaces 5.2.13和2.2.12鑽嘴魚科與JBoss 6.4
正確。在我的情況下,日期存儲在數據庫中沒有任何時區。按照慣例,UTC被存儲,當它被讀取時它也是UTC。所以也許我在這裏沒有問題?在我的情況下,當我在搜索掩碼中選擇一個月的第一個並提交時,該值是前一個月的最後一天。 – opfau
如果視圖不使用GMT/UTC時區,而是使用GMT + x中的某個時區,則確實會發生這種情況。這裏解釋:http://stackoverflow.com/questions/12351244/jsf-convertdatetime-renders-the-previous-day如果你節省了時間,它應該沒有問題,並且它被提交回來查看數據庫。或者更好的是,只要在需要呈現/接受/僅選擇日期(沒有時間)的組件中明確指定'timeZone =「GMT」''。沒有時間,你對**時間區不感興趣,對吧? – BalusC
這是一個帶價值和價值的搜索。因此,從值的時間設置爲00:00:00,並將值設置爲23:59:59。因此,用戶只能選擇一個日期,但時間很重要。但是對於搜索字段的例子,我認爲UTC的硬設時區應該沒問題。提交之後更改日期的問題來自UTC到CEST的轉換,然後再轉換。我沒有解決問題......我很困惑。另一個調試會話的時間。 – opfau