我相互减去两个日期,因为我需要它们之间的时差。我切换了常见的问题但是当我把它写到MySQL(时间)时,我发现总有1小时的差异。如果我期望2分钟差异,我得到1小时2分钟。现在我认为这是一个时区问题,但是有办法解决这个问题吗?
Date totalDate = visit.getTotalTime();
Date visitDate = visit.getVisitTime();
java.sql.Time sqlTotalTime = new java.sql.Time(totalDate.getTime() - visitDate.getTime());
ps.setTime(4, sqlTotalTime);
给出1h 2秒的差异,而不是2秒:
08/Dec/2010:07:27:54
08/Dec/2010:07:27:52
谢谢。
答案 0 :(得分:1)
你没有解释你是如何减去这两个日期或根据你的“常见问题”。
要获得两个日期之间的时差,您可以在两个日期之间调用getTime()
来获取自01-01-1970 00:00:00 GMT以来的毫秒数,然后减去这两个值: / p>
long differenceInMilliseconds = date1.getTime() - date2.getTime();
当然,如果你想要以秒,分,小时等的差异,那么将这个值除以适当的因子。
请注意,java.util.Date
对象本身不会保留有关时区的任何信息。
编辑(编辑后)看起来您正试图将时差存储在TIMESTAMP类型的列中或类似的东西中。不要那样做; TIMESTAMP等用于时间值,而不是时间差异值。只需将时差存储在数字列中即可。