我使用此代码获得了开始时间:
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
作为字符串?
答案 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)
如果您想要:
然后你可以使用类似的东西:
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));
答案 3 :(得分:2)
使用string
这是不可能的。您应该使用Date
对象:
如果cal
为Calendar
:
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是以毫秒为单位的总时间