您的位置:首页 > 运维架构 > Linux

linux c 字符串到time_t时间转换

2015-10-27 15:08 585 查看
转载:http://www.vimer.cn/2009/10/%E6%97%B6%E9%97%B4time_t%E5%92%8Cstring%E6%A0%BC%E5%BC%8F%E4%BA%92%E8%BD%AC.html
</pre></p><p></p><p><pre name="code" class="cpp">int StringToTimeEX(const string &strDateStr,time_t &timeData)
{
char *pBeginPos = (char*) strDateStr.c_str();
char *pPos = strstr(pBeginPos,"-");
if(pPos == NULL)
{
printf("strDateStr[%s] err \n", strDateStr.c_str());
return -1;
}
int iYear = atoi(pBeginPos);
int iMonth = atoi(pPos + 1);
pPos = strstr(pPos + 1,"-");
if(pPos == NULL)
{
printf("strDateStr[%s] err \n", strDateStr.c_str());
return -1;
}
int iDay = atoi(pPos + 1);
int iHour=0;
int iMin=0;
int iSec=0;
pPos = strstr(pPos + 1," ");
//为了兼容有些没精确到时分秒的
if(pPos != NULL)
{
iHour=atoi(pPos + 1);
pPos = strstr(pPos + 1,":");
if(pPos != NULL)
{
iMin=atoi(pPos + 1);
pPos = strstr(pPos + 1,":");
if(pPos != NULL)
{
iSec=atoi(pPos + 1);
}
}
}

struct tm sourcedate;
bzero((void*)&sourcedate,sizeof(sourcedate));
sourcedate.tm_sec = iSec;
sourcedate.tm_min = iMin;
sourcedate.tm_hour = iHour;
sourcedate.tm_mday = iDay;
sourcedate.tm_mon = iMonth - 1;
sourcedate.tm_year = iYear - 1900;
timeData = mktime(&sourcedate);
return 0;
}

int TimeToStringEX(string &strDateStr,const time_t &timeData)
{
char chTmp[100];
bzero(chTmp,sizeof(chTmp));
struct tm *p;
p = localtime(&timeData);
p->tm_year = p->tm_year + 1900;
p->tm_mon = p->tm_mon + 1;

snprintf(chTmp,sizeof(chTmp),"%04d-%02d-%02d %02d:%02d:%02d",
p->tm_year, p->tm_mon, p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
strDateStr = chTmp;
return 0;
}

int TimeToStringShortEX(string &strDateStr,const time_t &timeData)
{
char chTmp[100];
bzero(chTmp,sizeof(chTmp));
struct tm *p;
p = localtime(&timeData);
p->tm_year = p->tm_year + 1900;
p->tm_mon = p->tm_mon + 1;

snprintf(chTmp,sizeof(chTmp),"%04d-%02d-%02d",
p->tm_year, p->tm_mon, p->tm_mday);
strDateStr = chTmp;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: