在java中,我想知道保持显示,查询,报告等日期信息的最佳做法是什么。似乎如果我们坚持这么久,所有时区依赖都将被删除,我们将保持'全局持久化,显示本地原则,因为Date对象自动将long转换为当前时区。
但是作为Date对象持久存在的优势是什么? 除了信息所有者的时区之外,我是否会丢失任何信息? 当DLS考虑到时,我可以得到任何错误的信息吗? 持久化为UTC日期和长度之间的差异只是可读的数据库信息?
答案 0 :(得分:1)
根据您的数据库,您应使用TIMESTAMP WITH TIMEZONE
或将其转换为UTC
时间并将其存储为long
。
第一个依赖于DB来正确处理它(数据库会,但你的数据库驱动程序?你必须为你的设置测试它)。第二个使它成为一个手动过程,你最终会得到正确的结果,但是因为你必须要关心所有事情,所以会有更多的麻烦。
在Java内部,您可能希望Calendar
使用Date
,因为您可以手动指定TIMEZONE
等,因此您可以在与您自己不同的时区中显示日期