【发布时间】:2014-09-15 12:09:48
【问题描述】:
我有如下表,
id | Lunch_Out | After_Lunch_In
01 | 01:15:00 | 02:00:01
我正在尝试使用以下代码查找时差,
while(rst.next())
{
PrintWriter obj1 = response.getWriter();
obj1.println("while entered");
Time a =rst.getTime("Lunch_Out");
Time b =rst.getTime("After_Lunch_In");
PrintWriter objt1 = response.getWriter();
objt1.println("LougOut Time is :"+b);
PrintWriter objt2 = response.getWriter();
objt2.println("LogIn Time is :"+a);
//long c = b.getTime() - a.getTime()
long c = b.getTime() - a.getTime() / (24 * 60 * 60 * 1000);
//PrintWriter objtr = response.getWriter();
//objtr.println("different is :"+c);
Time diff = new Time(c);
PrintWriter objt = response.getWriter();
objt.println("different is :"+diff);
}
输出为:
while entered
LougOut Time is :02:00:02
LogIn Time is :01:15:01
different is :02:00:02
但期望输出是:00:45:01。我在哪里做错了?
【问题讨论】:
-
我认为您的运算符优先级搞砸了。你不想减去时间,然后缩放差异吗?
-
@OldProgrammer 对不起,我找不到你!
-
我建议您让 MySQL 为您做数学运算,作为查询的一部分,例如
SELECT Lunch_Out, After_Lunch_In, subtime(After_Lunch_In, Lunch_Out) as Lunch_Duration FROM ...。详情请参阅MySQL reference manual。 -
对于 DateComparisons,请查看 JodaTime。它使数据/时间计算变得非常容易......
-
您使用的是什么版本的 Java?如果您使用的是 Java 8,则不必使用 JodaTime 来轻松计算。