2012-05-17 11 views
5

Ich brauche den Unterschied zwischen dem aktuellen Datum und einem Datum in Zukunft, in Tagen, Stunden, Minuten und Sekunden in Android. Wie wenn aktuelles Datum und Uhrzeit 17.05.2012 03:53:00 und ein Datum in der Zukunft ist 18/05/2012 04:55:00.Get Datum und Zeitunterschied in Tagen, Stunden, Minuten und Sekunden in Android

Ich brauche Differenz als Restzeit = Tag anzuzeigen: 1, Stunden: 1 und Minuten 2.

Jede Art von Hilfe geschätzt wird. Vielen Dank im Voraus.

Grüße, Munazza K

Antwort

8

Sie beide Daten abziehen kann, und das die Unterschiede berechnen. Wie folgt:

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; 

Sie können die Zeit, die Sie bereits berechnet haben, subtrahieren. Sie erhalten die Stunden, bekommen den Rest, machen die Minuten usw.

+0

Dies gibt nur die Länge der gesamten Zeitdauer in verschiedenen Einheiten, keinen Zusammenbruch der Tage, Stunden und Minuten, wie die verbleibende OP impliziert. – santafebound

0

Verwenden Sie Date Klasse.

Mit getTime() Methode können Sie die Zeit in Millisekunden der 2 Daten haben. Dann können Sie ein weiteres Date Objekt mit der Anzahl von Millisekunden Ergebnis der Subtraktion zwischen beiden Daten erstellen. Und Sie werden die Anzahl der Tage, Stunden und Minuten seit der ersten Date haben.

16

Sie auf diese Weise tun können

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

ich die gleiche Sache vor kurzem implementiert, habe ich JodaTime. Sie können die jar herunterladen und es in Ihrem Android-App von hier: 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; 
     } 
Verwandte Themen