怎么将这样的字符串转换为时间戳 "20110203113546"
如何将这样的字符串转换为时间戳 "20110203113546"
咨询大家个问题,
如何把这种格式的字符串转坏为时间戳呢,
"20110203113546" 2011年2月3号11点35分46秒
大家帮忙给瞧瞧,
谢谢啦!
------解决方案--------------------
char szTime[] = "20110203113546";
struct MyTime
{
char szYear[5]; //赋值sprintf(szYear,szTime,4);
char szMonth[3]; //赋值sprintf(szszMonth,szTime+4,2);
char szDay[3]; //赋值sprintf(szszMonth,szTime+6,2);
....
....
}
char szTimeData[100];
sprintf(szTimeData,"%s年%s月%s日");
------解决方案--------------------
static int FormatSystemTime(const char* szTimeString, SYSTEMTIME& sysTime)
{
if (szTimeString == 0 || strlen(szTimeString) < 8) {
return -1;
}
for (unsigned int i = 0; i < strlen(szTimeString); i++) {
if (!isdigit(szTimeString[i])) {
return -1;
}
}
char year[10] = {0};
char month[10] = {0};
char day[10] = {0};
strncpy(year, szTimeString, 4);
year[4] = 0;
strncpy(month, szTimeString+4, 2);
month[2] = 0;
strncpy(day, szTimeString+6, 2);
day[2] = 0;
SYSTEMTIME sysTemp;
memset(&sysTemp, 0, sizeof(SYSTEMTIME));
sysTemp.wYear = atoi(year);
sysTemp.wMonth = atoi(month);
sysTemp.wDay = atoi(day);
FILETIME fileTime;
if ( FALSE==SystemTimeToFileTime(&sysTemp, &fileTime) )
return -1;
if ( FALSE==FileTimeToSystemTime(&fileTime, &sysTemp) )
return -1;
sysTime = sysTemp;
return 0;
}
------解决方案--------------------
MyTime TimeData;
sprintf(szTimeData,
"%s年%s月%s日",
TimeData.szYear,
TimeData.szMonth
TimeData.szDay
);
------解决方案--------------------
少了atoi,02是两位宽度,需要month=atoi(“02”,10);
------解决方案--------------------
呃。。。赋值那里用错函数了。
------解决方案--------------------
到底不能直接在网页的文本框里直接写代码。。。
总会搞错一些东西。。。
------解决方案--------------------
char szTime[] = "20110203113546";
struct MyTime
{
char szYear[5];
char szMonth[3];
char szDay[3];
....
....
}
char szTimeData[100];
MyTime TimeData;
ZeroMemory(&TimeData,sizeof(MyTime ));
memcpy(szYear,szTime,4);
memcpy(szMonth,szTime+4,2);
memcpy(szMonth,szTime+6,2);
sprintf(szTimeData,
"%s年%s月%s日",
TimeData.szYear,
TimeData.szMonth
TimeData.szDay
);
------解决方案--------------------
"20110203113546"把字符串分段
等 级:
咨询大家个问题,
如何把这种格式的字符串转坏为时间戳呢,
"20110203113546" 2011年2月3号11点35分46秒
大家帮忙给瞧瞧,
谢谢啦!
------解决方案--------------------
char szTime[] = "20110203113546";
struct MyTime
{
char szYear[5]; //赋值sprintf(szYear,szTime,4);
char szMonth[3]; //赋值sprintf(szszMonth,szTime+4,2);
char szDay[3]; //赋值sprintf(szszMonth,szTime+6,2);
....
....
}
char szTimeData[100];
sprintf(szTimeData,"%s年%s月%s日");
------解决方案--------------------
static int FormatSystemTime(const char* szTimeString, SYSTEMTIME& sysTime)
{
if (szTimeString == 0 || strlen(szTimeString) < 8) {
return -1;
}
for (unsigned int i = 0; i < strlen(szTimeString); i++) {
if (!isdigit(szTimeString[i])) {
return -1;
}
}
char year[10] = {0};
char month[10] = {0};
char day[10] = {0};
strncpy(year, szTimeString, 4);
year[4] = 0;
strncpy(month, szTimeString+4, 2);
month[2] = 0;
strncpy(day, szTimeString+6, 2);
day[2] = 0;
SYSTEMTIME sysTemp;
memset(&sysTemp, 0, sizeof(SYSTEMTIME));
sysTemp.wYear = atoi(year);
sysTemp.wMonth = atoi(month);
sysTemp.wDay = atoi(day);
FILETIME fileTime;
if ( FALSE==SystemTimeToFileTime(&sysTemp, &fileTime) )
return -1;
if ( FALSE==FileTimeToSystemTime(&fileTime, &sysTemp) )
return -1;
sysTime = sysTemp;
return 0;
}
------解决方案--------------------
MyTime TimeData;
sprintf(szTimeData,
"%s年%s月%s日",
TimeData.szYear,
TimeData.szMonth
TimeData.szDay
);
------解决方案--------------------
少了atoi,02是两位宽度,需要month=atoi(“02”,10);
------解决方案--------------------
呃。。。赋值那里用错函数了。
------解决方案--------------------
到底不能直接在网页的文本框里直接写代码。。。
总会搞错一些东西。。。
------解决方案--------------------
char szTime[] = "20110203113546";
struct MyTime
{
char szYear[5];
char szMonth[3];
char szDay[3];
....
....
}
char szTimeData[100];
MyTime TimeData;
ZeroMemory(&TimeData,sizeof(MyTime ));
memcpy(szYear,szTime,4);
memcpy(szMonth,szTime+4,2);
memcpy(szMonth,szTime+6,2);
sprintf(szTimeData,
"%s年%s月%s日",
TimeData.szYear,
TimeData.szMonth
TimeData.szDay
);
------解决方案--------------------
"20110203113546"把字符串分段
- C/C++ code
struct TIME { unsigned char year[4]; unsigned char mouth[2]; unsigned char day[2]; unsigned char hour[2]; unsigned char minute[2]; unsigned char second[2]; } void fun(unsigned char str[]) { struct TIME time; memset(time,0,sizeof(time)); memcpy(time.year,str,4); memcpy(time.mouth,str+4,2); memcpy(time.day,str+6,2); memcpy(time.hour,str+8,2); memcpy(time.minute,str+10,2); memcpy(time.second,str+12,2); printf("%s年%s月%s号%s点%s分4%s秒",time.year,time.mouth,time.day,time.hour,time.minute,time.second); }
------解决方案--------------------
如果只是转化个字符串
- C/C++ code
int main() { char str[]="20110203113546"; char ans[]=