获取java.sql.Time的时差

时间:2016-10-13 11:49:20

标签: java sql time

我试图在这两个时间变量之间获得时间差异

hFim = 17:30:00
hInic = 17:00:00
timeDiff = 20:30:00

输出就是这样的

Total displacement in {{(units | filter: {'number': mLeftModel})[0]['model'] }}

而不只是显示00:30:00我总是得到20h加上结果

4 个答案:

答案 0 :(得分:2)

通过这样做

 Time timeDiff = new Time(timeDiffLong);

您创建一个新的时间对象,timeDiffLong是自1970-01-01 00:00 UTC以来的毫秒数。由于差异为30分钟,Time对象将参考1970-01-01 00:30 UTC。但是接下来是:timeDiff.toString()将在默认时区输出时间,也就是说,在大多数情况下是您当前所在的时区。

长话短说:不要将间隔(持续时间,时差)强制为Time个对象。要么使用Duration类(Joda有一个),要么自己按照Kushan的建议进行除法和模数计算。

答案 1 :(得分:1)

如果您使用Java 8,则可以执行以下操作:

Cat

然后您可以使用例如查询小时/分钟等。 LocalTime from = hFim.toLocalTime(); LocalTime to = hInic.toLocalTime(); Duration d = Duration.between(from, to);

答案 2 :(得分:0)

看起来像一个重复的问题,你看过这个答案吗?

How to find difference between two Joda-Time DateTimes in minutes

你应该看看Joda时间:

http://www.joda.org/joda-time/

答案 3 :(得分:0)

您的问题是当您使用

创建时间差异时
Time timeDiff = new Time(timeDiffLong);

并输出System.out.println(timeDiff),然后结果显示为您当地时区的 。执行此操作时可以看到:

System.out.println(new Time(0));
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
System.out.println(new Time(0));

这会产生以下输出

00:00:00 //will probably be 20:00:00 for you
16:00:00

简而言之:您的时差显示为转换为当地时区的GMT日期,这就是几个小时的原因。