我试图在这两个时间变量之间获得时间差异
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加上结果
答案 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时间:
答案 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日期,这就是几个小时的原因。