3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
我剛剛發(fā)現(xiàn)了這個(gè)來(lái)自Groovy的快速解決方案:
import groovy.time.TimeCategory
import groovy.time.TimeDuration
TimeDuration td = TimeCategory.minus( stop, start )
println td

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用除法和mod進(jìn)行所有這些操作。
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;
那應(yīng)該給您您要求的所有信息。
編輯:由于人們似乎很困惑,不,這不會(huì)考慮leap年或夏令時(shí)切換等問(wèn)題。這是純粹的消逝時(shí)間,這就是打開(kāi)要求的時(shí)間。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用標(biāo)準(zhǔn)的Date API并不是那么容易。
您可能要看Joda Time或JSR-310。
我不是Joda的專(zhuān)家,但是我認(rèn)為代碼是:
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());
添加回答
舉報(bào)