2012-05-17 29 views
5

Ho bisogno di ottenere la differenza tra la data corrente e una data in futuro, in giorni, ore, minuti e secondi in Android. Ad esempio se la data e l'ora correnti sono 17/05/2012 03:53:00 e una data futura è il 18/05/2012 alle 04:55:00.Ottieni la differenza di data e ora in giorni, ore, minuti e secondi in Android

ho bisogno di visualizzare la differenza come tempo rimanente = giorno: 1, ore: 1, e minuti 2.

Qualsiasi tipo di aiuto sarà apprezzato. Molte grazie in anticipo.

saluti, Munazza K

risposta

8

È possibile sottrarre entrambe le date, e il calcolare le differenze. Tipo:

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; 

È possibile sottrarre l'ora già calcolata. Ottieni le ore, il resto, i minuti, ecc.

+0

Questo dà solo la lunghezza di tutta la durata di tempo in unità diverse, non una ripartizione dei giorni, ore e minuti dalla fine come il OP implica. – santafebound

0

Utilizzare la classe Date.

Con il metodo getTime(), è possibile avere il tempo in millisecondi delle 2 date. Quindi è possibile creare un altro oggetto Date con il numero di risultati in millisecondi della sottrazione tra entrambe le date. E avrai il numero di giorni, ore e minuti dal primo Date.

16

È possibile farlo in questo modo

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

ho implementato la stessa cosa da poco, ho usato JodaTime. È possibile scaricare il vaso e includerlo nella vostra app Android da qui: 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; 
     } 
Problemi correlati