在Android中获取日期,时间,分钟和秒的日期和时间差异

时间:2012-05-17 10:59:30

标签: android

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

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

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

此致 Munazza K

6 个答案:

答案 0 :(得分:18)

你可以这样做

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

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

答案 2 :(得分:2)

您可能还会发现这篇文章很有用,因为它描述了计算两个日期之间差异的正确方法:https://stackoverflow.com/a/6406294/716075

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

答案 4 :(得分:0)

使用Date课程。

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

答案 5 :(得分:0)

从所有这些回应中,我想到了

fun hoursBetween(date: Date): Long = TimeUnit.MILLISECONDS.toHours(date.time - Date().time)
fun minutesBetween(date: Date): Long = TimeUnit.MILLISECONDS.toMinutes(date.time - Date().time) % 60
fun secondsBetween(date: Date): Long = TimeUnit.MILLISECONDS.toSeconds(date.time - Date().time) % 60

希望它会有所帮助;)