所以我的方法接收一个 24 小时格式的时间(“HH:MM:SS”)并返回一个字符串差时间。如果是当地时间下午 2:00,我应该能够发送它“16:30:00”(下午 4:30)并获得输出“2 小时 30 分钟”。但是代码有一些问题,我只是一个初学者,我需要帮助来修复它。
问题是如果时间是下午 4:40,我发送它“17:00:00”(下午 5:00)它会返回消息:12 小时 20 分钟而不是 0 小时 20 分钟。另一个问题是,如果我在当前时间发送它,它将返回“12 小时”,而不是应该返回的 24 小时。
请记住,我只是 java 的初学者,数学真的不是我的事,所以非常感谢任何帮助。谢谢。
private static String timeUntil(String distanceTime) {
String returnMsg = null;
try {
SimpleDateFormat sdfDate = new SimpleDateFormat("hh:mm:ss");
Date now = new Date();
java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss");
Date date1 = df.parse(sdfDate.format(now));
Date date2 = df.parse(distanceTime);
long diff = date2.getTime() - date1.getTime();
int timeInSeconds = (int) (diff / 1000);
int hours, minutes;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
if (hours >= 0) {
returnMsg = hours + " hours" +
"\n" + minutes + " mins";
} else {
returnMsg = minutes + " mins";
}
} catch (Exception e) {
e.printStackTrace();
}
return returnMsg;
}