0

我使用以下代码获得开始时间:

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

4 回答 4

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);
于 2012-11-13T11:25:57.857 回答
2

如果你想有:

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

那么你可以使用类似的东西:

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

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

于 2012-11-13T11:30:02.120 回答
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 格式化以获取特定格式的结果
于 2012-11-13T11:31:55.827 回答
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是返回 a 的自定义对象之类的其他东西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 是以毫秒为单位的总时间

于 2012-11-13T11:33:13.293 回答