各位大神帮忙看看:
用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]="";