1

计算 01.01.2013 和现在之间差异的最佳方法是什么,所以结果看起来像 25 天 16 小时 18 分 43 秒?

4

2 回答 2

2
String dateStop = "01.01.2013";
long now = System.currentTimeMillis():

SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");  


Date d1 = null;
Date d2 = null;
try {
     d1 = new Date (now);
     d2 = format.parse(dateStop);
} catch (ParseException e) {
     e.printStackTrace();
}   

long difference = d2.getTime() - d1.getTime();
long differenceBack = difference;
differenceBack = difference / 1000;
int secs = differenceBack % 60;
differenceBack /= 60;
int mins = differenceBack % 60;
differenceBack /= 60;
int hours = differenceBack % 24;

差异以毫秒为单位。然后你可以简单地做一些数学来计算天/小时/分钟/秒

于 2012-12-05T11:15:05.297 回答
0

由于您没有提供任何代码,因此我不会只为您执行此操作,但是出于某种原因(首先是时区),所说的时间可能是一个有趣的话题。

我建议这个很棒的图书馆http://joda-time.sourceforge.net/

Joda-Time 为 Java 日期和时间类提供了质量替代品。该设计允许多个日历系统,同时仍提供简单的 API。“默认”日历是 XML 使用的 ISO8601 标准。格里高利、儒略、佛教、科普特、埃塞俄比亚和伊斯兰系统也包括在内,我们欢迎进一步添加。支持类包括时区、持续时间、格式和解析。

看看使用句号和类似的东西

DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);

// period of 1 year and 7 days
Period period = new Period(start, end);

我使用了类似的东西来创建倒计时时钟,但是您在问题中未能说明您希望返回值的格式(天、秒、分钟)。但是,期间在这方面非常灵活。例如:

// able to calculate whole days between two dates easily
Days days = Days.daysBetween(start, end);

// able to calculate whole months between two dates easily
Months months = Months.monthsBetween(start, end);
于 2012-12-05T11:16:22.743 回答