2012-11-15 33 views
0

應用程序:java + ExtJS的如何妥善存放結束日期數據庫

有很多不同的實體與java.util.Date類型的屬性:的startDate和iesendDate(結束日期可能是NULL)。兩個日期都可以選擇帶或不帶時間部分(例如時間部分總是持續存在,如果沒有選擇,則爲事件)。例如,像這樣:

2010-07-01 00:00:00 

當用戶沒有時間選擇endDate時,可能會出現問題。例如,期間從2010-07-01開始,到1010-07-04結束。現在在數據庫中它被存儲爲:

startDate="2010-07-01 00:00:00" 
endDate="2010-07-04 00:00:00". 

所以看起來這段時間在2010-07-04的第一秒結束。但是,正如用戶所假設的那樣,該結束日期被隱含地包括在內,例如,期限於2010-07-04最後一個月末結束。系統中的不同時期有很多日期比較。

在這種情況下如何正確存儲結束日期?

我想到了可能的解決方案,但他們都好像有點不對勁:

  1. 要存儲的最後一天這樣的時間部分:「2010-07-04 23:59:99」。但似乎結束日期不是24小時 - 但是(24h - 0.(9)毫秒),這可能是潛在的問題。時間部分看起來相當難看。
  2. 要修改ExtJs組件,它將在persistence stage上爲用戶選擇的日期添加1天,並在此日期將顯示給用戶時(用戶明確設置時間部分的情況除外)再次減去1天。我不喜歡這裏的日期與時間的一部分,沒有它的區別對待。
  3. 例如,僅將開始日期保存爲日期對象,然後以秒爲單位保存週期長度。這種方法看起來相當不錯 - 但必須重新整理整個應用程序,並且可能在結束日期使用不同的比較並不容易。
  4. 只需使用當前的 - 保存非enclusive結束日期不受時間和日期時比較要非常小心

有人能解釋一下使用最廣泛的實踐來解決這樣的問題呢?

回答

0

將結束日期添加爲用戶選定值+1天。