时间字符串类型为 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);