zoukankan      html  css  js  c++  java
  • 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);
    

    涉及知识点

    作者: lazyboy
    文章来源: http://www.cnblogs.com/xbotao/
    如有问题,请留言或者Email我: upc_xbt 163.com

  • 相关阅读:
    闭包
    正则的理解
    正则
    Date对象
    math对象
    js异步
    dom事件
    事件对象-2
    事件对象
    函数作用域
  • 原文地址:https://www.cnblogs.com/xbotao/p/7376236.html
Copyright © 2011-2022 走看看