2011-05-15 65 views
2

当我使用下面的代码在一份声明中时间问题,在准备好的声明 - > MySql的

Date totalDate = visit.getTotalTime(); 
Date visitDate = visit.getVisitTime(); 

java.sql.Time sqlTotalTime = new java.sql.Time(totalDate.getTime() - visitDate.getTime()); 
ps.setTime(4, sqlTotalTime); 

我使用这些值

08/Dec/2010:07:27:54 
08/Dec/2010:07:27:52 

我希望00:00:02但我得到01:00:02?

任何想法为什么......

+0

你确定这是访问值吗?也许在构造函数体中你做了一些增加这个小时的东西?我们可以有更多的代码吗? – Boro 2011-05-15 15:01:18

+0

10.120.10.101 - [08/Dec/2010:07:27:52 1000]“GET /ELO/css/images/background-shadow.gif HTTP/1.1”304 - 10.120.10.101 - - [08/Dec/2010:07:27:54 1000]“GET /ELO/qnx/leftHighlight.gif HTTP/1.1”304 - 这就是我创建访问的日志。当我使用这些方法时,我会解析这些东西并获取上面的数据。我看到的差异是在MySql ....在Java中,当我测试我得到2秒时,它是没有问题的!!这是从Java到MySql的翻译 – 2011-05-15 15:22:11

+0

然后尝试相同,但使用sql.Date来代替。并让我们看看是否会有问题。或者,它可能与时区有关?添加更多的代码,最好建立一个[SSCCE](http://sscce.org)来展示这个问题。 – Boro 2011-05-15 16:42:45

回答

0

问题是,你试图让一段时间。两个不同的概念。创建时间实例时,它与您的时区绑定。如果我在东海岸,我会在当地时间19:00:02但是格林尼治标准时间00:00:02。如果你寻找一个真正的时间,那么你将不得不添加或减去totalDate和visitDate之间的差异到一些知道的时间值来获得你想要的时间值。