12小时制字符串转24小时制字符串

时间字符串类型为 C++ std::string,

原始字符串格式为

6/14/2017 1:00:24 AM
6/14/2017 1:02:00 AM
……
6/14/2017 12:59:57 PM
6/14/2017 1:00:26 PM

12小时与24小时对应关系为

12 pm 是中午十二点,12am 则是指早上0时,也就是晚上的12点。

实现代码

void Get24Time(std::string dateTime, std::string &startTime)
{
	//找出label
	string strLabel;
	int len = dateTime.length();
	strLabel = dateTime.substr(len-2, 2);

	//需要找出小时的位置
	int nStartPos = dateTime.find(' ', 0) + 1;
	int nEndPos = dateTime.find(':', 0);

	string strHour = dateTime.substr(nStartPos, nEndPos-nStartPos);
	int nHour = atoi(strHour.c_str());
	
	if(strLabel == "AM")
	{
		//12:00:00 AM 为24小时制 0:00:00, 需要转换 其他直接去掉AM即可
		if(nHour == 12)
		{
			nHour = 0;
			char str[3];
			sprintf(str,"%d",nHour);

			dateTime = dateTime.substr(0, len-3);
			startTime = dateTime.replace(nStartPos, nEndPos-nStartPos, str);
		}
		else
		{
			startTime = dateTime.substr(0, len-3);
		}	
	}
	else
	{
		//12:00:00 PM 为24小时制 12:00:00, 无需转换; 其他需要+12 得到24小时制
		if(nHour == 12)
		{
			startTime = dateTime.substr(0, len-3);
		}
		else
		{
			nHour = nHour + 12;
			char str[3];
			sprintf(str,"%d",nHour);

			dateTime = dateTime.substr(0, len-3);
			startTime = dateTime.replace(nStartPos, nEndPos-nStartPos, str);
		}	
	}


}

函数调用如下

Get24Time(dateTime, startime);

涉及知识点

posted @ 2017-08-16 22:04  mr-xbt  阅读(810)  评论(0编辑  收藏  举报