2011-05-18 39 views
0

工作我减去对方两个日期,因为我需要他们之间的时间差。我切换通常的问题,但是当我将它写入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

也许相关的代码片段将帮助别人给出出主意 – Raghuram 2011-05-18 07:21:13

+1

发布一些代码,请 – 2011-05-18 07:21:21

+0

我不知道什么是“我切换的常见问题”的意思? – 2011-05-18 07:21:30

回答

1

你不解释你究竟是如何减去两个日期或什么“的常见问题”是根据你。

要得到两个日期之间的时间差,你可以叫他们两个getTime()获得自01-01-1970 00:00:00 GMT毫秒数,然后减去这两个值:

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

Ofcourse,如果你想要在几秒钟之差,分钟,小时等,然后除以相应系数此值。

注意,一个java.util.Date对象不通过本身不持有有关时区的任何信息。

编辑(编辑之后)看起来好像您正在尝试将时间差存储在TIMESTAMP类型的列或类似的列中。不要那样做; TIMESTAMP等意味着时间值,而不是时间的区别的值。只需将时差存储在数字列中即可。

+0

我编辑了我的帖子...所以我需要添加关于我使用的时区的信息? – 2011-05-18 07:30:14

+0

true ...问题是,我在MySql中遇到了TIME ...我有点“被迫”使用它...... – 2011-05-18 07:32:28

+1

@Darth蓝色光芒 - 那么我认为你必须“解压”它指出数据库模式对设计它的人来说是行不通的。 – 2011-05-18 07:37:03