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

本文介绍了一种将12小时制的时间格式转换为24小时制的方法,并提供了C++实现的具体代码示例。通过解析时间字符串,判断AM/PM标签进行相应的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

涉及知识点

转载于:https://www.cnblogs.com/xbotao/p/7376236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值