从两个 LocalTime 之间的差异获取 LocalTime

Get LocalTime from difference between two LocalTime's

我在寻找一种从另一个中减去一个 LocalTime 的优雅方法时遇到问题,但不是几秒或几分钟,而是这样:

LocalTime difference = now - before;

显然这行不通,所以实际上,我所追求的是接受两个 LocalTime,然后再给我一个,所以我可以执行以下操作:

00:01:42:519
00:02:13:217

00:00:30:698

我试过以下方法:

long seconds = before.until(now, ChronoUnit.SECONDS);

但显然这只会让我秒,好吧,所以我将其更改为:

long millis = before.until(now, ChronoUnit.MILLIS);
long seconds = before.until(now, ChronoUnit.SECONDS);
long minutes = before.until(now, ChronoUnit.MINUTES);
long hours = before.until(now, ChronoUnit.HOURS);

但后来我意识到它只是计算指定单位的整个时间变化,而不是只计算 "contribution" 个单位的变化,如果你明白我的意思的话。

PS:我已经扫描了几个问题,它们似乎是同一件事,只是将整个差异返回到一个单一的单元中。如果这是重复的,请指出正确的方向!

有什么想法吗?

应该这样做:

LocalTime diff= t2.minusNanos(t1.toNanoOfDay());

https://ideone.com/3JB3U5

阅读 LocalTime#until() 的 JavaDoc,我找到了这个解决方案:

long differenceMillis = MILLIS.between(before, now);
    Instant start = Instant.now();
        //your lengthy code here
    Instant end = Instant.now();
    long nanoDiff = end.getNano() - start.getNano();

为什么我 post 这个答案? B/c 您可以使用 Instant class 并获得多种不同格式作为您问题的答案...