android计算常量日期和现在之间的差异

时间:2012-12-05 11:09:44

标签: android date

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

2 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:0)

由于你没有提供任何代码,我不打算为你做,但是说时间可能是一个有趣的话题,因为有各种原因(开始的时区)。

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

  

Joda-Time为Java日期和时间提供了高质量的替代品   类。该设计允许多个日历系统,同时仍然   提供简单的API。 “默认”日历是ISO8601标准   这是由XML使用的。格里高利,朱利安,佛教,科普特人,   还包括Ethiopic和伊斯兰教系统,我们对此表示欢迎   补充。支持类包括时区,持续时间,格式和   解析。

使用Periods和其他内容

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);