2010-08-18 22 views
10

Projemde kronometre çeşit kullanan ve ben bazı örnekler buldum ama hepsi çok kafa karıştırıcı final time = stop - startAndroid Java: İki kez nasıl çıkarılır?

gibi bu iki değerlerden bir sonuca ihtiyaç

start time ex: 18:40:10 h 
stop time ex: 19:05:15 h 

var.

Basit bir çözüm var mı?

cevap

26

Dizeleriniz varsa, bunları java.text.SimpleDateFormat kullanarak bir java.util.Date dosyasına ayırmanız gerekir. gibi bir şey:

İşte
 java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss"); 
     java.util.Date date1 = df.parse("18:40:10"); 
     java.util.Date date2 = df.parse("19:05:15"); 
     long diff = date2.getTime() - date1.getTime(); 

fark 18:40:10 ve 19:05:15 arasında geçen milisaniye sayısıdır.

DÜZENLEME 1: Bunun için bir yöntem çevrimiçi Bulunan

(http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time.html?page=2 da):

int timeInSeconds = diff/1000; 
    int hours, minutes, seconds; 
    hours = timeInSeconds/3600; 
    timeInSeconds = timeInSeconds - (hours * 3600); 
    minutes = timeInSeconds/60; 
    timeInSeconds = timeInSeconds - (minutes * 60); 
    seconds = timeInSeconds; 

DÜZENLEME 2:

Bunun bir özensiz bir yoludur (bir dize olarak isterseniz, ama) çalışır:

String diffTime = (hours<10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + " h"; 

DÜZENLEME 3:

Eğer milisaniyeleri istiyorsanızsadece Ardından 1000 ile senin saniyelik kesirli kısmını almak için o bölebilirsiniz bu

long timeMS = diff % 1000; 

yok.

+0

Aham örnekleri gördüm ama yine de sonuçlara ihtiyacım var 01: 10.34 saat, burada milisaniyede sonuç alıyorum ve sonuç almak için daha fazla matematiğe ihtiyacım var, en basit çözüm var mı? – Nezir

+0

Yukarıdaki düzenlemeye bakın: – jcb

+0

Zamanınız yalnızca saatler, dakikalar ve saniyeler kaydediliyorsa, sonuçta milisaniye nasıl elde edersiniz? – jcb

11

Eğer java.util.Date kullandığınız varsayarak:

long totalTime = endDate.getTime() - startDate.getTime(); 

sonuç milisaniye cinsinden toplam süre olacaktır.

+1

Teşekkürler Thierry Bir görevi tamamladım :) – Nezir