以分钟为单位计算两次(hh:mm)AM / PM的差值

时间:2013-09-18 05:08:52

标签: c++

所以我想尝试两次不同的时间并计算差异并以分钟为单位返回值。 用户将一次输入每个值。小时然后分钟,然后输入上午或下午。我面临的问题实际上是在进行计算。我有以下功能但它只在两个时间都在上午或下午并且第一次小于第二次时才有效。我需要帮助:(

int ComputeTime(int hour1, int hour2, int min1, int min2, bool ampm1, bool ampm2)
{
    if (ampm1 == ampm2)
    {
        int calc1 = (hour1* 60) + min1,
            calc2 = (hour2 * 60) + min2;

        if (calc2 > calc1)
        {
            return calc2 - calc1;
        }

    }
    else
    {
        //
    }
}

1 个答案:

答案 0 :(得分:2)

这似乎很容易。

首先,如果时间是PM,则添加12小时(以分钟为单位)。然后,如果时间1晚于时间2,则返回time1 - time2。

// Convert time to minutes past midnight
int ConvertTimeToMinutes(int hour, int min, bool pm)
{
    if (hour == 12)
        hour = 0;
    int calc = hour*60 + min;
    if (pm)
        calc += 12*60;
    return calc;
}

// Compare times and return the absolute time difference in minutes
int ComputeTime(int hour1, int hour2, int min1, int min2, bool pm1, bool pm2)
{
    int calc1 = ConvertTimeToMinutes(hour1, min1, pm1);
    int calc2 = ConvertTimeToMinutes(hour2, min2, pm2);
    if (calc2 > calc1)
    {
        return calc2 - calc1;
    }
    else
    {
        return calc1 - calc2;
    }
}

命名布尔变量ampm1并不是一个好主意,因为完全不清楚true是表示AM还是PM。我假设真的是PM并相应地重命名了变量。

我还编写了一个单独的函数来进行时间转换,以减少重复的代码。