0

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

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
    {
        //
    }
}
4

1 回答 1

2

这似乎很容易。

首先,如果时间是下午,则添加 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。我假设 true 是 PM 并相应地重命名了变量。

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

于 2013-09-18T05:14:00.127 回答