我已经阅读了许多关于类似问题的答案,但仍然无法理解整个逻辑。 我的目标是在我的应用程序内部处理日期(包括时间,不仅仅是年份等),并考虑夏时制转换和服务器的时区。我使用hibernate和postgresql db。我的错误是对来自数据库的所有日期使用 java.util.Date类型。不久我意识到它不包含时区信息。现在问题出现了,如何使用正确的日期(考虑日光和时区)?Java从数据库映射到休眠映射的日期(时区问题和夏令时)
什么是正确的方法来做到这一点?使用不同类型的类如Calendar?或者就这样离开它,但是在我使用日期的每个地方,我应该使用日历将它转换为本地时区。
让我困惑的是数据如何来自数据库到Date对象,如果它的安全将日期对象转换为日历以包含时区等?
如果我不得不在服务器上使用UTC,我将显式设置日历时区,然后使用Calendar.setTime(Date)也可以吗? – maximus
如果你想在一个非UTC时区有'Date'内容,你应该首先使用带有UTC的'Calendar.getInstance(TimeZone)'创建一个'Calendar',然后'setTime(Date)',然后将它改为任何你喜欢使用'setTimeZone(TimeZone)'的时区。这是否符合你的问题? – Alexander
只是为了确认,我留下了现在使用的hibernate实体代码(使用java.util.Date),但是在那里我使用了那个日期,我只是将它们转换成Calendar来描述它的方式吗? – maximus