如何在数据库中正确存储结束日期

时间:2012-11-15 14:58:37

标签: java javascript date datetime extjs

应用程序:Java + ExtJS

有很多不同的实体具有java.util.Date类型的属性:startDate和iesendDate(endDate可能为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的第一秒结束。但是,如用户所假设的那样,隐含地包含该endDate,例如期限在2010-07-04的最后一秒结束。系统中的不同时期有很多日期比较。

在这种情况下如何正确存储结束日期?

我考虑过可能的解决方案,但所有这些解决方案似乎都有点错误:

  1. 如此存储结束日期的时间部分:“2010-07-04 23:59:99”。但似乎结束日期不是24小时 - 但是(24小时--0。(9)毫秒),这可能是潜在的问题。时间部分看起来也很难看。
  2. 修改ExtJs组件,它将在持久性阶段将用户选择的日期添加1天,并在向用户显示此日期时再次减去1天(用户明确设置时间部分的情况除外)。我不喜欢这里的日期与时间部分,没有它的处理方式不同。
  3. 例如,仅将开始日期保存为Date对象,然后以秒为单位保存周期长度。这种方法似乎相当不错 - 但是必须重新编写整个应用程序,并且可能在结束日期使用不同的比较并不容易。
  4. 只需使用当前版本 - 无需时间即可保存非包容性结束日期,并在日期比较期间保持谨慎
  5. 有人可以解释最广泛使用的做法来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

将结束日期添加为用户选择值的+1天。