我从两个日期中减去两个日期,因为我需要它们之间的时差。我切换了通常的问题,但当我将其写入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);
给出1小时2秒的差值,而不是2秒:
08/Dec/2010:07:27:54
08/Dec/2010:07:27:52
谢谢。
发布于 2011-05-18 15:28:56
你没有解释你是如何准确地减去这两个日期的,或者你认为什么是“通常的问题”。
要获得两个日期之间的时间差,可以对这两个日期调用getTime()
,以获取自格林威治时间01-01-1970 00:00:00后的毫秒数,然后减去这两个值:
long differenceInMilliseconds = date1.getTime() - date2.getTime();
当然,如果您想要以秒、分钟、小时等为单位的差值,则将此值除以适当的因子。
请注意,java.util.Date
对象本身并不包含任何有关时区的信息。
编辑(在编辑之后)看起来您正在尝试将时间差存储在TIMESTAMP或类似类型的列中。不要这样做;时间戳等是针对时间值的,而不是针对时间差值的。只需将时间差存储在数字列中。
https://stackoverflow.com/questions/6041179
复制相似问题