所以我的方法接收一个 24 小时格式的时间(“HH:MM:SS”)并返回一个字符串作为时差。如果是本地时间下午 2:00,我应该能够发送“16:30:00”(下午 4:30)并获得输出“2 小时 30 分钟”。但是代码有一些问题,我只是一个初学者,我需要帮助来修复它。
问题是如果时间是下午 4:40,我发送了“17:00:00”(5:00PM),它会返回消息: 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;
}
最佳答案
在您的日期格式中,hh
用于 12 小时制。将 HH
用于 24 小时制:
new SimpleDateFormat("HH:mm:ss");
关于Java时间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884680/