2010-08-18 66 views
10

我使用某种秒表在我的项目,我有Android Java:如何减去两次?

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

我需要的结果来自这两个值一样final time = stop - start

我发现了一些例子,但他们都非常混乱。

有没有简单的解决方案?

回答

26

如果您有字符串,则需要使用java.text.SimpleDateFormat将它们解析为java.util.Date。例如:

​​

此处diff是18:40:10到19:05:15之间经过的毫秒数。

编辑1:

找到一种方法在网上为这个(在http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time.html?page=2):

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

编辑2:

如果你想把它当作一个字符串(这是一个草率的方式,但它的工作原理):

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

编辑3:

如果你想在毫秒只是这样做

long timeMS = diff % 1000; 

然后可以除以1000来获得你的秒小数部分。

+0

Aham我看到这样的样品,但我又需要结果为01:10.34 h,这里我得到的结果是毫秒,需要更多的数学才能得到希望的结果,是否有最简单的解决方案? – Nezir 2010-08-18 17:26:13

+0

看我上面的编辑: – jcb 2010-08-18 17:32:04

+0

如果你的时间只记录小时,分钟和秒钟,你将如何获得毫秒的结果? – jcb 2010-08-18 17:36:27

11

假设你正在使用java.util.Date

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

其结果将是在毫秒的总时间。

+1

谢谢Thierry我完成了一项任务:) – Nezir 2010-08-18 18:42:56