private double calculateAverageSpeed() {
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss", Locale.ENGLISH);
try {
double totalTime;
totalTime = (format.parse(stopTime + ":00").getTime()) - (format.parse(startTime + ":00").getTime());
return (milesDriven / totalTime);
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
您正在解析看起来像 24 小时制时间的字符串,其格式说明符需要 12 小时时间,带有 AM/PM 指示器 (hh:mm:ss(。
我的猜测是"12:01"被解释为午夜后一分钟。 使用 HH:mm:ss 表示 24 小时制。
我希望这会对您有所帮助
您也可以使用时间格式"HH:mm"作为 24 小时格式,我使用了"hh:mm">
如果您使用"HH:mm">
你会得到这样的结果
时间:太平洋标准时间 1970 年 1 月 1 日星期四 12:01:00 72060000 时间:太平洋标准时间 1 月 1 日星期四 13:16:00 1970 76560000 diff==4500000
总计时间=1
42.0
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class TimeDifference {
public static void main(String[] args) throws ParseException {
System.out.println(calculateAverageSpeed("12:01","13:16",42.0));
}
private static double calculateAverageSpeed(String time1,String time2, double
miles) throws ParseException {
DecimalFormat decimalFormatter = new DecimalFormat("###,###");
SimpleDateFormat format = new SimpleDateFormat("hh:mm", Locale.ENGLISH);
Date date = format.parse(time1);
Date date2 = format.parse(time2);
System.out.println("Time: " + date+ " "+date.getTime());
System.out.println("Time: " + date2+ " "+date2.getTime());
long diff = date2.getTime() - date.getTime();
System.out.println("diff=="+diff);
int totalTime = (int)(diff/(60*60*1000));
System.out.println("totalTime="+decimalFormatter.format(totalTime));
return (miles / totalTime);
}
}
你会得到这个结果. 时间:太平洋标准时间 1970 年 1 月 1 日星期四 00:01:00 28860000 时间:太平洋标准时间 1970 年 1 月 1 日星期四 13:16:00 76560000
diff==47700000
总计时间=13
3.230769230769231