时间转换
描述
给定一个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;
}