【发布时间】:2011-11-18 23:40:37
【问题描述】:
我有一个应用程序,它以时间戳作为 sql 选择的开始日期和结束日期的边界,我想填充一个哈希图,其中自今年的第一个星期一以来的周数作为值和周数作为钥匙。我发现使用时间戳真的很难,而且我对添加 86,400,000 秒来增加一天感觉不太好,因为这不考虑闰日、小时、秒。
我打算在上面加上 13 天 23 小时 59 分 59 秒,这样我就可以在地图中以星期为关键字查找开始日期,然后使用开始日期来获取结束日期。
所以我想尝试得到这样的东西:
Week startDate endDate
1 2011-01-03 00:00:00 2011-01-16 23:59:59
2 2011-01-17 00:00:00 2011-01-30 23:59:59
地图中的前两列和最后一列是在查找后计算的。如何安全地增加 java.sql.Timestamp?
【问题讨论】:
-
您需要担心的唯一问题是闰秒,而且每隔几年就会发生一次。如果您的程序自 1970 年以来一直在运行,它将总共关闭 24 秒。你增加 8640 万秒的计划是完全可行的。
-
使用 Calendar 或 Joda 怎么样? joda-time.sourceforge.net
-
我想真正的问题是......您是否将其确定为您的应用程序的阻止程序?如果你还没有,那就去吧。如果它是一个问题,它会出现,然后你可以解决它。
-
不是您问题的答案,而是一个尝试的建议:您提到时间戳用作开始日期和结束日期的边界。与其在 java 中计算结束日期时间戳,然后在查询中传递它,为什么不传递您拥有的开始日期时间戳,然后使用基于它的数据库日期/时间函数计算结束日期时间戳?
-
您是否有某些理由需要一个准确、包容的
timestamp?为什么不使用包含->排除范围(date或timestamp)呢?所以,>= startDate AND < endDate- 然后只需添加 14 天,您根本不必担心秒...
标签: java sql timestamp increment