C++笔试题 时间转换

版权声明:代码属于原创,转载请联系作者并注明出处。 https://blog.csdn.net/weixin_43379056/article/details/83538408

时间转换

描述

给定一个12小时制的时间,请将其转换成24小时制的时间。说明:12小时制的午夜12:00:00AM,对应的24小时制时间为00:00:00。12小时制的中午12:00:00PM,对应的24小时制时间为12:00:00。

输入描述

一个描述12小时制时间的字符串。所有的输入都是合理的,不用考虑输入不合理的情况。

输出描述

一个描述24小时制时间的字符串。

样例输入 1

08:03:45PM

样例输出 1

20:03:45

样例输入 2

08:03:45AM

样例输出 2

08:03:45

#include <iostream>
#include <string> 
    
using namespace std;

// convert time to 24-hour system
class CambrianTimeConvert
{
public:
    string time24hourSystemConvert(const string& t);
};

string CambrianTimeConvert::time24hourSystemConvert(const string& t)
{
    string newt;

    if (t.find("pm") != string::npos || 
        t.find("PM") != string::npos) 
    {
        newt.assign(t.begin(), t.end() - 2);

        int hour_digit1 = newt[0] - '0' + 1;
        int hour_digit2 = newt[1] - '0' + 2;
        if (hour_digit2 >= 10)
        {
            hour_digit1 += 1;
            hour_digit2 %= 10;
        }
        if (2 == hour_digit1 && 4 == hour_digit2)
        {
            hour_digit1 = 1;
            hour_digit2 = 2;
        }
        newt[0] = hour_digit1 + '0';
        newt[1] = hour_digit2 + '0';
    }
    else if (t.find("am") != string::npos ||
             t.find("AM") != string::npos)
    {
        newt.assign(t.begin(), t.end() - 2);

        int hour_digit1 = newt[0] - '0';
        int hour_digit2 = newt[1] - '0';
        if (1 == hour_digit1 && 2 == hour_digit2)
        {
            hour_digit1 = 0;
            hour_digit2 = 0;
        }
        newt[0] = hour_digit1 + '0';
        newt[1] = hour_digit2 + '0';
    }
    
    return newt;
}
    
int main()
{
    string t;

    getline(cin, t);

    CambrianTimeConvert ctc;

    cout << ctc.time24hourSystemConvert(t) << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43379056/article/details/83538408
今日推荐