c++测试题:24小时制和12小时制互转,求解决

例如:24小时制转化12小时制的话输入13:50转换为1:50pm

 

例如:12小时制转化24小时制的话输入1:50pm转换为13:50

代码如下,如有帮助,请采纳一下,谢谢。

#include <iostream>
#include <string>
using namespace std;
//24转12
string trans24212(string ss)
{
	int index = ss.find(':');
	if (index <= 0)
	{
		return "";
	}else
	{
		string hour = ss.substr(0,index);
		string mint = ss.substr(index+1,ss.length() - index-1);
		int hh = atoi(hour.c_str());
		if(hh >=12)
		{
			hh = hh -12;
			char buf[4] = {0};
			itoa(hh,buf,10);
			string nh = buf;
			nh = nh + ":"+mint+"pm";
			return nh;
		}else
			return ss+"am";
	}
}

//12转24
string trans12224(string ss)
{
	int len = ss.length();
	int flag = -1;
	int i=0;
	for (i = 0;i<len;i++)
	{
		if(ss.at(i) == 'a' || ss.at(i) == 'A')
		{
			flag = 0;//表示上午
			break;
		}else if (ss.at(i) == 'p' || ss.at(i) == 'P')
		{
			flag = 1;//表示下午
			break;
		}
	}
	int index = ss.find(':');
	string hour = ss.substr(0,index);
	string mint = ss.substr(index+1,i - index-1);
	if (flag == 0)
	{
		return hour + ":" + mint;
	}else if(flag == 1)
	{
		int hh = atoi(hour.c_str());
		hh += 12;
		char buf[4]={0};
		itoa(hh,buf,10);
		string ns = buf;
		return ns+":"+mint;
	}else
		return "";
}




int main()
{
	string s = trans24212("13:20");
	string s2 = trans12224("1:30pm");
	cout << s << endl;
	cout << s2 << endl;
	return 0;
}