2012-05-17 56 views
5

我需要获取当前日期和将来的日期之间的区别,以android,天,小时,分钟和秒为单位。如果当前的日期和时间是17/05/2012 03:53:00,未来的日期是18/05/2012 04:55:00。Android中的日期,时间,分钟和秒数获取日期和时间差异

我需要显示差作为剩余时间=天:1,小时:1,和分钟2.

任何形式的帮助将不胜感激。提前谢谢了。

问候, Munazzaķ

回答

8

您可以减去两个日期,以及计算出的差异。有点像这样:

long difference = calendar.getTimeInMillis()-currentTime; 

    long x = difference/1000; 
    seconds = x % 60; 
    x /= 60; 
    minutes = x % 60; 
    x /= 60; 
    hours = x % 24; 
    x /= 24; 
    days = x; 

你可以减去你已计算的时间。你得到的时间,得到的休息,做的分钟等。

+0

这只是给不同单位的整个持续时间的长短,而不是天数,小时,和剩余的分钟的故障OP意味着。 – santafebound

0

使用Date类。

使用getTime()方法,您可以在两个日期的时间(以毫秒为单位)。 然后,您可以创建另一个Date对象,其中包含两个日期之间相减的结果的毫秒数。 自第一个Date以来,您将拥有天数,小时数和分钟数。

16

你可以做这样

c_date=18/05/2012 04:55:00. and saved_date=17/05/2012 03:53:00 

    long diffInMillisec = c_date.getTime() -saved_date.getTime(); 
    long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMillisec); 
    seconds = diffInSec % 60; 
    diffInSec/= 60; 
    minutes =diffInSec % 60; 
    diffInSec /= 60; 
    hours = diffInSec % 24; 
    diffInSec /= 24; 
    days = diffInSec;` 
1

我最近实施了同样的事情,我用JodaTime。你可以从这里下载JAR并将其包含在你的Android应用:http://joda-time.sourceforge.net/

//Create your taget date  
Calendar cal = Calendar.getInstance(); 
    cal.clear(); 
    cal.set(Calendar.YEAR, 2012); 
    cal.set(Calendar.MONTH, Calendar.JULY); 
    cal.set(Calendar.DATE, 15); 
    cal.set(Calendar.HOUR_OF_DAY, 8); 
    Date startDate = cal.getTime(); 

//Use JodaTime to calculate difference 
    Period period = getTimePassedSince(startDate); 

//Extract values and display 
    daysTV.setText("" + Math.abs(period.getDays())); 
    hoursTV.setText("" + Math.abs(period.getHours())); 
    minsTV.setText("" + Math.abs(period.getMinutes())); 
    secsTV.setText("" + Math.abs(period.getSeconds())); 

    ... 
    public static Period getTimePassedSince(Date initialTimestamp){ 
      DateTime initDT = new DateTime(initialTimestamp.getTime()); 
      DateTime now = new DateTime(); 
      Period p = new Period(initDT, now, PeriodType.dayTime()).normalizedStandard(PeriodType.dayTime()); 
      return p; 
     }