我互相减去两个日期,因为我需要它们之间的时差。 我切换了常见的问题,但是当我将其写入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
谢谢。
你没有解释你是如何减去这两个日期的,或者根据你的说法,"通常的问题"是什么。
要获取两个日期之间的时差,您可以对这两个日期调用 getTime()
以获取自 01-01-1970 00:00:00 GMT 以来的毫秒数,然后减去这两个值:
long differenceInMilliseconds = date1.getTime() - date2.getTime();
当然,如果您想要以秒、分钟、小时等为单位的差异,请将该值除以适当的系数。
请注意,java.util.Date
对象本身并不保存有关时区的任何信息。
(编辑后)看起来您正在尝试将时间差存储在 TIMESTAMP 或类似类型的列中。别这样;时间戳等用于时间值,而不是时间差值。只需将时差存储在数字列中即可。