使用日期

时间:2011-05-18 07:19:14

标签: java mysql datetime

我相互减去两个日期,因为我需要它们之间的时差。我切换了常见的问题但是当我把它写到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 

谢谢。

1 个答案:

答案 0 :(得分:1)

你没有解释你是如何减去这两个日期或根据你的“常见问题”。

要获得两个日期之间的时差,您可以在两个日期之间调用getTime()来获取自01-01-1970 00:00:00 GMT以来的毫秒数,然后减去这两个值: / p>

long differenceInMilliseconds = date1.getTime() - date2.getTime();

当然,如果你想要以秒,分,小时等的差异,那么将这个值除以适当的因子。

请注意,java.util.Date对象本身不会保留有关时区的任何信息。

编辑(编辑后)看起来您正试图将时差存储在TIMESTAMP类型的列中或类似的东西中。不要那样做; TIMESTAMP等用于时间值,而不是时间差异值。只需将时差存储在数字列中即可。