Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在java中,我想知道为显示、查询、报告等保留日期信息的最佳做法是什么。似乎如果我们坚持这么久,所有时区依赖性将被删除,我们将保持“全局持久,本地显示” ' 原理,因为 Date 对象会自动将 long 转换为当前时区。
但是持久化为 Date 对象有什么好处呢? 除了信息所有者的时区之外,我是否会丢失任何信息? 考虑到 DLS 时,我会得到任何错误信息吗? 坚持为 UTC 日期和 long 之间的区别只是可读的数据库信息?
根据您的数据库,您应该使用其中一个,TIMESTAMP WITH TIMEZONE或者将其转换为UTC时间并将其存储为long.
TIMESTAMP WITH TIMEZONE
UTC
long
第一个依赖于数据库来正确处理它(数据库会,但你的数据库驱动程序会吗?你必须为你的设置测试这个)。第二个让它成为一个手动过程,你最终会得到正确的结果,但会更麻烦,因为你必须照顾好一切。
在 Java 中,您可能希望使用Calendarover,Date因为您可以TIMEZONE手动指定等,因此您可以更轻松地在与您自己不同的时区中显示日期。
Calendar
Date
TIMEZONE