在Android / Java中减去两次

时间:2012-11-13 11:22:40

标签: java android time simpledateformat

我使用此代码获得了开始时间:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
            String start_time = sdf.format(cal.getTime());

我使用这段代码得到了结束时间:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
            String end_time = sdf.format(cal.getTime());

我想要花时间,所以像start_time - endtime = elapsed_time这样的东西会很好,但似乎不可能。我仍然不擅长理解对象,但我想因为字符串是对象,我不能轻易得到经过的时间。什么是一种简单的方法,但要将elapsed_time作为字符串?

4 个答案:

答案 0 :(得分:2)

在这种情况下,您最好的选择可能是Joda Time:http://joda-time.sourceforge.net/ 它有一个Interval类和一个Duration类,两者都可以用来测量时差。 Interval有一个ReadableDuration,它还有一个toString方法来格式化它。

来自Joda Time文档:

// interval from start to end
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);
Interval interval = new Interval(start, end);

答案 1 :(得分:2)

如果您想要:

  • calBegin =设置为开始时间的日历
  • calEnd =日历设置为结束时间

然后你可以使用类似的东西:

long elapsedMs = calEnd.getTime().getTime() - calBegin.getTime().getTime();

其中elapsedMs =开始和结束之间经过的毫秒数

答案 2 :(得分:2)

 Date elapsed= new Date(sdf.parse(end_time).getTime() - sdf.parse(start_time).getTime());
        System.out.println(sdf.format(elapsed));
  1. 将您的开始时间和时间转换为长型。
  2. 做减法。
  3. 将获得的结果转换为java.util.Date对象
  4. 格式使用SimpledateFormat以特定格式获取结果

答案 3 :(得分:2)

使用string这是不可能的。您应该使用Date对象:

如果calCalendar

Date start_date = cal.getTime();
//change to calendar to other date
Date end_date = cal.getTime();
long total_time = end_date.getTime() - start_date.getTime();

如果cal是其他类似于返回String的自定义对象:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
Date start_date = sdf.parse(cal.getTime(), 0);
Date end_date = sdf.parse(cal.getTime(), 0);

long total_time = end_date.getTime() - start_date.getTime();

total_time是以毫秒为单位的总时间