Android Java:如何减去两次?

2022-09-04 05:23:09

我在我的项目中使用某种秒表,我有

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

我需要这两个值的结果,例如final time = stop - start

我发现了一些例子,但它们都非常令人困惑。

有什么简单的解决方案吗?


答案 1

如果你有字符串,你需要使用java.text.SimpleDateFormat将它们解析为java.util.Date。像这样:

        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();

此处的差异是 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,以获得秒的小数部分。


答案 2

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

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

结果将是以毫秒为单位的总时间。