首先,我们需要一种方法来将字符串转换成线性时间表示:
// Given a string of the form HHMM, this returns the number of minutes after midnight.
// For example: timeStringToMinutes("0000") -> 0.
// timeStringToMinutes("0015") -> 15.
// timeStringToMinutes("0100") -> 60.
// timeStringToMinutes("0837") -> 517.
// timeStringToMinutes("2359") -> 1439.
static int timeStringToMinutes(String s) {
return Integer.parseInt(s.substring(0, 2)) * 60 + Integer.parseInt(s.substring(2, 4));
}
接下来,我们定义一个函数来计算时间的差异:
// Example: forwardNumberOfMinutes("1240", "1028") -> 1308.
static int forwardNumberOfMinutes(String start, String end) {
int from = timeStringToMinutes(start);
int to = timeStringToMinutes(end);
if (to < from)
to += 1440; // 1 day, or 24 hours
return to - from;
}
最后,我们定义一个函数将线性时间转换为小时和分钟:
// Example: minutesToTimeString(1308) -> "2148" (21 hr 48 min).
static minutesToTimeString(int n) {
return String.format("%02d%02d", n/60, n % 60);
}
你能解释一下,你如何计算“这些时间之间的总小时数”?目前还不清楚你如何从旅行时间获得“11小时20 + 10小时28”。从“1240到1028”。 – Tunaki
从一天的12点40分到第二天的10点28分,你需要11点20分(去午夜),然后10点28分。挺清楚的。 –
@MateoBarahona感谢清理那个哈哈^^ – madcrazydrumma