C++筆試題 時間轉換
阿新 • • 發佈:2018-11-02
時間轉換
描述
給定一個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;
}