用C语言实现:首先获取系统时钟,然后时钟数据格式为:年月日时分秒(YYYYMMDDHHMMSS)

各位大神帮忙看看:
用C语言实现:首先获取系统时钟,然后时钟数据格式为:年月日时分秒(YYYYMMDDHHMMSS),所有数据均已数值方式表示。其中年分为2字节(低位在前,高位在后),其余为一个字节。如1997年6月21日10:32:55的表示为CD0706150A037.

#include <stdio.h>

#include <time.h>

int main()
{
 time_t rawtime;
 struct tm * timeinfo;
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
 int year,month,day,hour,min,sec;
 year = 1900+timeinfo->tm_year;
 month = 1+timeinfo->tm_mon;
 day = timeinfo->tm_mday;
 hour = timeinfo->tm_hour;
 min = timeinfo->tm_min;
 sec = timeinfo->tm_sec;
 printf ( "当前时间:%4d-%02d-%02d %02d:%02d:%02d\n\n",year, month,day,hour,min,sec);
 printf ( "你需要的格式:%4d%02d%02d%02d%02d%02d\n\n",year, month,day,hour,min,sec);

 char hyy[2],lyy[2],MM[2],dd[2],hh[2],mm[2],ss[2];
 sprintf(hyy,"%02X",year/100);
 sprintf(lyy,"%02X",year%100);
 sprintf(MM,"%02X",month);
 sprintf(dd,"%02X",day);
 sprintf(hh,"%02X",hour);
 sprintf(mm,"%02X",min);
 sprintf(ss,"%02X",sec);

 printf("转化为16进制:%02s%02s%02s%02s%02s%02s%02s\n",hyy,lyy,MM,dd,hh,mm,ss);
 //exit(0);
 return 0;

说明:我用VC6.0现写的,运行结果截图如下: 

追问

你太厉害了!!!还有个问题,我到时候要调用这个函数,所以我想把得出来的十六进制统一放到一个数组中,再输出。但是我放了以后就不合适了
char time[7]={hyy[0],lyy[0],MM[0],dd[0],hh[0],mm[0],ss[0]};

for(int j=0;j < 7;j++)
printf("转化为16进制:%02s\n",time[i);
您能不能再帮忙看看!!感谢感谢!!

追答

char time[7]={hyy[0],lyy[0],MM[0],dd[0],hh[0],mm[0],ss[0]};
同学,你这么写是错的,这是字符数组,不是整型数字;
我不是应经帮你把转化后的16进制存放到了数组中了吗,
就是这些数组啊:hyy[2],lyy[2],MM[2],dd[2],hh[2],mm[2],ss[2];就是为了方便你调用啊
比如,我要输出月份的16进制,就直接输出:
printf("%02s\n",MM);

追问

那能不能把这些字符数组hyy[2],lyy[2],MM[2],dd[2],hh[2],mm[2],ss[2]
统一放到一个数组中呢?

追答

可以的,用用函数strcat();
char time[50]="";
strcat(time,lyy);
strcat(time,hyy);
strcat(time,MM);
strcat(time,dd);
strcat(time,hh);
strcat(time,mm);
strcat(time,ss);
就全部连成一串在time[50]中了

定义修改一下:char time[50]="";

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-28
#include <stdio.h>
#include <time.h>  

int main () {
time_t rawtime;
time(&rawtime);
struct tm *timeinfo;
timeinfo = localtime(&rawtime);
printf("%04X%02X%02X%02X%02X%02X\n",
1900 + timeinfo->tm_year,
1 + timeinfo->tm_mon,
timeinfo->tm_mday,
timeinfo->tm_hour,
timeinfo->tm_min,
timeinfo->tm_sec
);
return 0;
}

第2个回答  2014-05-28
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
char szTime[32];
time_t tmtime;
struct tm *tmi;

//取当前时间
time(&tmtime);
tmi = localtime(&tmtime);

sprintf(szTime, "%04d", 1900 + tmi->tm_year);
unsigned short int iYear = atoi(szTime);

printf("%02X%02X%02X%02X%02X%02X%02X\n",
iYear&0x00ff,
iYear>>8,
1 + tmi->tm_mon,
tmi->tm_mday,
tmi->tm_hour,
tmi->tm_min,
tmi->tm_sec
);
return 0;
}
相似回答