做的是基于C8051F310的脉冲计数项目,要记录脉冲来的时间,现在C51中没有mkttime函数,自己写了一个,单独放出来在VC上测试
#include
#include
#define u8 unsigned char
#define u16 unsigned int
struct date{
u16 year;
u8 month,day,hour,min,sec;
}d2={2016,7,19,0,29,0};
unsigned long int_time=0;
main() //计算时间
{
u16 i;
u16 j;
i=((d2.year)-1970);
j=i-i%4; //i年数,j是i中4的最大倍数
switch(i%4)
{case 0: int_time=j/4*(365*4+1)*24*3600;
break;
case 1: int_time=j/4*(365*4+1)*24*3600+365*24*3600;
break;
case 2: int_time=j/4*(365*4+1)*24*3600+2*365*24*3600;
break;
case 3: int_time=j/4*(365*4+1)*24*3600+(3*365+1)*24*3600;
break;
}
switch(d2.month)
{case 1: break;
case 2: int_time+=31*24*3600;
break;
case 3: int_time+=(31+28)*24*3600;
break; //*算完月再判断是否是闰年*/
case 4: int_time+=(31+28+31)*24*3600;
break;
case 5: int_time+=(31+28+31+30)*24*3600;
break;
case 6: int_time+=(31+28+31+30+31)*24*3600;
break;
case 7: int_time+=(31+28+31+30+31+30)*24*3600;
break;
case 8: int_time+=(31+28+31+30+31+30+31)*24*3600;
break;
case 9: int_time+=(31+28+31+30+31+30+31+31)*24*3600;
break;
case 10: int_time+=(31+28+31+30+31+30+31+31+30)*24*3600;
break;
case 11: int_time+=(31+28+31+30+31+30+31+31+30+31)*24*3600;
break;
case 12: int_time+=(31+28+31+30+31+30+31+31+30+31+30)*24*3600;
break;
}
int_time+=((d2.day-1)*24*3600+d2.hour*3600+d2.min*60+d2.sec);
if((d2.month!=1)&&(d2.month!=2)&&((d2.year%4)==0)) //闰年
{
int_time+=24*3600 ;
}
printf("%ld",int_time);
}
求高手解答