计算Java / Groovy中的经过时间

我有...



Date start = new Date()


...

...

...


Date stop = new Date()

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


-


我会提一个问题。


我只想获取经过的时间(绝对值),而不考虑leap年,每月的天数等。


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


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


20 sec

13 min, 4 sec

2 h, 10 min, 2 sec

4 d, 4 h, 2 min, 2 sec

因此,请原谅我缺乏精确性。


潇湘沐
浏览 1013回答 3
3回答

弑天下

我刚刚发现了这个来自Groovy的快速解决方案:import groovy.time.TimeCategory import groovy.time.TimeDurationTimeDuration td = TimeCategory.minus( stop, start )println td

慕虎7371278

您可以使用除法和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;那应该给您您要求的所有信息。编辑:由于人们似乎很困惑,不,这不会考虑leap年或夏令时切换等问题。这是纯粹的消逝时间,这就是打开要求的时间。

素胚勾勒不出你

使用标准的Date API并不是那么容易。您可能要看Joda Time或JSR-310。我不是Joda的专家,但是我认为代码是:Interval interval = new Interval(d1.getTime(), d2.getTime());Period period = interval.toPeriod();System.out.printf(    "%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n",     period.getYears(), period.getMonths(), period.getDays(),    period.getHours(), period.getMinutes(), period.getSeconds());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java