完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
typedef unsigned int uint;//输入时间月份与年份都需要减1,输出的月份与年份都需要加1 typedef unsigned long int ulint; uint a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; uint b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; uint count=10000;//记录计数器的值,从0开始 uint run_ping(uint year)//判断是闰年还是平年,返回1是闰年,返回0是平年 { uint i; if(year%4==0)//判断能否被4整除 { if(year%100==0)//判断能否被100整除 { if(year%400==0)//判断能否被400整除 { i=1; } else { i=0; } } else { i=1; } } else { i=0; } return i; } ulint set_time(uint year,uint month,uint day,uint hour,uint min,uint second)//设置当前计数器的初值 { ulint sec=0,i=0,x=0; if(run_ping(year))//判断是平年还是闰年 { for(i=1;i sec+=(a*86400);//当前月份的总时间 } sec=366*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//初始化的时间化成秒,化简成计数器的初始值,当前月份12则实际只有11个月完整,第12月没过 } else { for(i=1;i sec+=(a*86400);//如果超出2月份的话,就多加了一天 } if(month>2)//因为平年的2月28天 { sec=365*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//多加了一天必须得减去。 } else { sec=365*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//没有过2月不用减去多去的一天,年月日时分秒 } } return sec; } ulint current_time(void)//开始当前的时间,一般在初始化一个变量的时候,一定要先赋值为0,否则可能出现预想不到的情况 { ulint time=0,year=0,month=0,second=0,hour=0,min=0,i=0,day=0; long int day_month=0; time=set_time(130,5,20,12,0,0)+count;//当前的时间总秒,年份不能太长可能超过数据长度, if(run_ping(18)) { year=time/86400/366;//输出时year需要加1,获取年份,一天86400s day_month=time/86400%366;//月份加天数 do { day_month-=a[++i]; }while(day_month>0); month=i;//获取当前的月份 day=day_month+a;//获取日期 } else { year=time/86400/365;//输出时year需要加1,获取年份,time/86400代表整数天数,求余代表小时加秒数 day_month=time/86400%365;//月份加天数 do { day_month-=b[++i]; }while(day_month>0); month=i;//获取当前的月份 day=day_month+a;//获取日期 } hour=time%86400/3600;//当前的小时 min =time%86400%3600/60;//分钟数 second=time%86400%3600%60;//秒数 return year+1;//时分秒正确,数据长度问题,数据有无符号问题 } void main(void) { ulint dat1; dat1=current_time(); //dat1=set_time(1,2,1,1,0,10); printf("%d",dat1); } |
|
相关推荐
2 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
OV7670摄像头使用串口发送数据到另一个板子上的lcd,出现花屏
1375 浏览 1 评论
692 浏览 0 评论
674 浏览 0 评论
STM32CUBEMX(12)--IIC,12864OLED(0.96寸)移植
712 浏览 0 评论
STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
648 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 04:59 , Processed in 0.553145 second(s), Total 53, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号