读书人

怎么将这样的字符串转换为时间戳 quot;201

发布时间: 2012-09-01 09:33:02 作者: rapoo

如何将这样的字符串转换为时间戳 "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();}
[解决办法]
探讨

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,&……

读书人网 >C++

热点推荐