因为那不是您获得持续时间的方式.将代码更改为此:
package com.sandbox;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Sandbox {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
try {
Date start = sdf.parse("00:44:16");
Date end = sdf.parse("04:02:39");
long duration = end.getTime() - start.getTime();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(duration);
System.out.println(new SimpleDateFormat("yyyy MM dd HH:mm:ss").format(cal.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
您会看到它打印出1969 12 31 19:18:23.那不是约会,而是持续时间.由于您在打印答案时会跳过日期部分,因此看起来好像在打印持续时间,但实际上并非如此.
坦率地说,我不知道如何在Java中执行此操作.我只是使用JodaTime库.有一个名为Duration的类可以使此操作变得容易.这是一个SO问题,显示了如何使用它以所需的方式打印结果:“pretty print” duration in java