如何将这样的字符串转换为时间戳 "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[]=等 级:
[解决办法]
如果只是转化个字符串
- C/C++ code
int main(){ char str[]="20110203113546"; char ans[]="1234年78月12日56时90分34秒"; // "12345678901234567890123456" // 1 7 1 5 9 3 sscanf(str,"%4c%2c%2c%2c%2c%2c", &ans[0], &ans[6], &ans[10], &ans[14], &ans[18], &ans[22]); printf("%s\n",ans); return 0;}
[解决办法]
啥意思?你就是要把他打出来?
char szTime[] = "20110203113546";
char szTimeData[100];
sprintf(szTimeData,"%.4s年%.2s月%.2s日%.2时%.2分%.2秒", szTime,szTime+4,szTime+6,szTime+8,szTime+10,szTime+12);
OK了。
[解决办法]
#include <stdio.h>
#include <stdlib.h>
char str[] = "20110203113546";
int GetNumber(int start,int end)
{
char temp[10];
int j = 0;
for(int i = start;i != end; i++)
{
temp[j] = str[i];
j++;
}
temp[j] = NULL;
return atoi(temp);
}
void main()
{
int year = GetNumber(0,4);
int mon = GetNumber(4,6);
int day = GetNumber(6,8);
int hour = GetNumber(8,10);
int min = GetNumber(10,12);
int sec = GetNumber(12,14);
char buf[30];
sprintf(buf,"%d年%d月%d号%d点%d分%d秒",year,mon,day,hour,min,sec);
printf("%s\n",buf);
}
有点笨绌的方法,看对你有没啥帮助。
[解决办法]
- C/C++ code
#include <stdio.h>#include <conio.h>void main() { char ds[]="20110203113546"; char ts[27]; int y,m,d,H,M,S; sscanf(ds,"%4d%2d%2d%2d%2d%2d",&y,&m,&d,&H,&M,&S); sprintf(ts,"%d年%d月%d号%d点%d分%d秒",y,m,d,H,M,S); printf("%s\n",ts);//2011年2月3号11点35分46秒 getch();}
[解决办法]