在 Java / Groovy 中计算已用时间

2022-08-31 22:37:53

我有。。。


Date start = new Date()

...
...
...

Date stop = new Date()

我想在这两个日期之间得到年,月,日,小时,分钟和秒。

--

我将完善这个问题。

我只想得到经过的时间,作为一个绝对的衡量标准,即不考虑闰年,每个月的日子等。

因此,我认为不可能让岁月过去,我所能得到的只是几天,小时,分钟和几秒钟。

更具体地说,我想告诉某个任务持续了例如

20 sec
13 min, 4 sec
2 h, 10 min, 2 sec
4 d, 4 h, 2 min, 2 sec

所以请原谅我缺乏精确性。


答案 1

我刚刚发现了这个快速的Groovy来源的解决方案:

import groovy.time.TimeCategory 
import groovy.time.TimeDuration

Date start = new Date()

// do something here

Date stop = new Date()

TimeDuration td = TimeCategory.minus( stop, start )
println td

答案 2

你可以通过分割和mod来完成所有这些工作。

long l1 = start.getTime();
long l2 = stop.getTime();
long diff = l2 - l1;

long secondInMillis = 1000;
long minuteInMillis = secondInMillis * 60;
long hourInMillis = minuteInMillis * 60;
long dayInMillis = hourInMillis * 24;

long elapsedDays = diff / dayInMillis;
diff = diff % dayInMillis;
long elapsedHours = diff / hourInMillis;
diff = diff % hourInMillis;
long elapsedMinutes = diff / minuteInMillis;
diff = diff % minuteInMillis;
long elapsedSeconds = diff / secondInMillis;

这应该为您提供您请求的所有信息。

编辑:由于人们似乎感到困惑,不,这不会考虑闰年或夏令时切换之类的因素。这是纯粹的经过时间,这就是开放所要求的。