HHMM格式的总时间

时间:2015-11-07 21:48:34

标签: java

所以我有一系列的时间:

ArrayList<String> times = new ArrayList<String>();
times.add("1240");
times.add("1028");
times.add("0923");
times.add("2023");

我不想找到这些时间之间经过的总小时数,但我无法弄清楚如何!

例如:

  

“1240至1028”将是11小时20 + 10小时28的旅行时间。

     

从一天的12h40到第二天的10h28,需要11h20(到午夜),然后是10h28。很清楚。

1 个答案:

答案 0 :(得分:1)

首先,我们需要一种方法将字符串转换为线性时间表示:

private:
    typedef std::set<connection_hdl, std::owner_less<connection_hdl>> con_list;
    con_list m_connections;

void on_open(connection_hdl hdl) {
    m_connections.insert(hdl);
}

void on_close(connection_hdl hdl) {
    m_connections.erase(hdl);
}


if (jdata["type"] == "update") {
    for (auto it : m_connections) {
        msg->set_payload(table.dump());
            m_server.send(it, msg);
        }
    }
}

接下来,我们定义一个计算时差的函数:

// 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;
}