したがって、私のメソッドは 24 時間形式 ("HH:MM:SS") で時刻を受け取り、時差の文字列を返します。現地時間の午後 2:00 の場合、「16:30:00」(午後 4:30) を送信して、「2 時間 30 分」という出力を取得できるはずです。しかし、コードにはいくつかの問題があり、私は初心者であり、修正するために助けが必要です.
問題は、時刻が午後 4 時 40 分で、「17:00:00」(午後 5 時) を送信した場合、0 時間 20 分ではなく 12 時間 20 分というメッセージが返されることです。もう1つの問題は、現在の時刻を送信した場合、本来の24時間ではなく、「12時間」離れて返されることです。
私は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;
}