2012-03-05 46 views
2

在我的劇本框架應用程序中的用戶可以選擇進入了一個時間表的日期,該日期被映射到我的模型實體:播放框架:如何爲用戶輸入的日期定義時區?

@InFuture 
@As("dd/MM/yyyy HH:mm") 
public Date validFrom; 

這是在表單中的字段

<input type="text" name="schedule.validFrom" placeholder="dd/mm/yyyy hh:mm"> 

問題是我們的服務器正在非本地時區運行,並且時區應該從正在進行此計劃的對象中獲取。

因此,我知道該時間表的時區是什麼,我不希望用戶必須在該字段中輸入時區。

一個可能的解決方案是提交日期作爲字符串,並進行手動驗證和解析,但我不知道是否有更好的解決方案。

回答

0

更好的選擇是給用戶一個下拉列表的時區。例如:

String TIMEZONE_ID_PREFIXES ="^(Africa|America|Asia|Atlantic|Australia|Europe|Indian|Pacific)/.*"; 
String[] ids = TimeZone.getAvailableIDs(); 
Timezone tz = null; 
for (int i=0; i<ids.length; i++) { 
    if (ids[i].matches(TIMEZONE_ID_PREFIXES)) { 
    //add TimeZone.getTimeZone(ids[i]).getDisplayName() to a drop down list 
    } 
} 
+0

時間表被鏈接到具有一個固定的時區的位置,不需要一個下拉 – Somatik 2012-03-05 18:57:00

2

手動解析可能是您的最佳選擇。
您可以創建自己的包含日期和時區的對象。
然後根據InFutureCheck執行您自己的驗證檢查並執行時區轉換。

+0

實際上去進行驗證之前修改日期/存儲的溶液。 toDateTime(的timeZone);它不是那麼幹淨,但它的工作原理。 – Somatik 2012-03-06 14:25:20

0

這裏的最佳實踐取決於您的用戶是否需要查看多個時區。

相關問題