系统日期时间格式化与字符串替换函数

开发中遇到日期格式化与字符串替换函数,自己写了一个希望对朋友们有所帮助。

 

char* GetSystemDateTime(char chDaySplitSign, char chDayTimeSplitSign, char chTimeSplitSign)
{
    SYSTEMTIME dtWork;
    static char szSystemDateTime[DATE_LEN + TIME_LEN + 6];
    char szSystemTime[TIME_LEN + 3];

    memset(&dtWork, 0, sizeof(dtWork));
    GetLocalTime(&dtWork);
 
    memset(szSystemDateTime, 0, DATE_LEN + TIME_LEN + 6);
    memset(szSystemTime, 0, TIME_LEN + 3);

    if(chDaySplitSign == '/0'){
      sprintf(szSystemDateTime, "%04d%02d%02d%c",
      dtWork.wYear, dtWork.wMonth, dtWork.wDay, chDayTimeSplitSign);
   } else {
      sprintf(szSystemDateTime, "%04d%c%02d%c%02d%c",
      dtWork.wYear, chDaySplitSign, dtWork.wMonth, chDaySplitSign, dtWork.wDay, chDayTimeSplitSign);
   }

   if(chTimeSplitSign == '/0'){
      sprintf(szSystemTime, "%02d%02d%02d",
      dtWork.wHour, dtWork.wMinute, dtWork.wSecond);
   } else {
      sprintf(szSystemTime, "%02d%c%02d%c%02d",
       dtWork.wHour, chTimeSplitSign, dtWork.wMinute, chTimeSplitSign, dtWork.wSecond);
   }

   strcat(szSystemDateTime, szSystemTime);
 
   return(szSystemDateTime);

}

 

 

char* strReplace(char* pSource, const char* pOld ,const char* pNew)
{
 unsigned int iLen = 0;
 char* pTemp = NULL;
 char* pFind = NULL;
 char* pLast = pSource;
 int i = 0;
 int iDiffLen = 0;

 if(pSource == NULL || pOld == NULL || pNew == NULL)
 {
  return NULL;
 }
 if(strlen(pSource) == 0 || strlen(pOld) == 0)
 {
  return pSource;
 }
 
 iDiffLen = strlen(pNew) - strlen(pOld);
 iLen = strlen(pSource);

 pTemp = (char*)malloc(iLen+1);
 if(pTemp == NULL)
 {
  return NULL;
 }
 memset(pTemp, 0x00, iLen+1);

 while( (pFind = strFind(pLast, pOld)) != NULL)
 {
  i++;
  if(iDiffLen > 0)
  {
   pTemp = (char*)realloc(pTemp,(iLen+i*iDiffLen+1));
   if(pTemp == NULL)
   {
    return NULL;
   }
   memset(pTemp + strlen(pTemp), 0x00, iLen+i*iDiffLen+1-strlen(pTemp));
  }
  memcpy(pTemp + strlen(pTemp), pLast, pFind - pLast);
  strcpy(pTemp + strlen(pTemp),pNew);
  pLast =  pFind + strlen(pOld);
 }

 if(i > 0)
 {
  if((unsigned int)(pLast - pSource) != iLen)
  {
   memcpy(pTemp + strlen(pTemp),pLast, (iLen - (pLast - pSource)));
  }
  strcpy(pSource, pTemp);
 }

 free(pTemp);
 return pSource;
}

 

char *RTrim(char *pString)
{
 int iCnt;

 for(iCnt = strlen(pString) - 1; iCnt >= 0; --iCnt){
  if(pString[iCnt] == 32){
   pString[iCnt] = '/0';
  } else {
   break;
  }
 }

 return pString;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值