C语言编写 秒数转换成时间戳 UTC时间 函数实现
单片机中需要转换时间戳,没有现成的函数可以用,为了提高单片机的效率,写了一个,参考如下: const int Days[12]={31,28,31,30,31}; void MainWindow::Calc_Time(unsigned long Second_data) { unsigned long Year = 1970; unsigned long Month = 1; unsigned long Day = 1; unsigned long Hour = 0; unsigned long Min = 0; unsigned long Second = 0; unsigned int Pass4year; int hours_per_year; if(Second_data < 0) { Second_data = 0; } Second = Second_data%60; //取秒 Second_data /= 60; Min = Second_data%60; //取分 Second_data /= 60; //余下的小时 //过去有多少个4年,每4年有 1461*24小时 Pass4year = Second_data/(1461*24); //计算年份 Year = 1970 +Pass4year*4; //剩下的小时数 Second_data = Second_data %(1461*24); //校正闰年影响的年份,计算一年中剩下的小时数 for(;;) { //一年的hour = 365*24 hours_per_year = 365*24; //判断闰年 if((((Year%4)==0)&&((Year%100)!=0)) ||((Year%400)==0)) { hours_per_year +=24; } if(Second_data < hours_per_year) { break; } Year++; Second_data -= hours_per_year; } //小时数 Hour = Second_data%24; Second_data /= 24; //剩下的天数 Second_data+=1; //天数从1号开始 if((((Year%4)==0)&&((Year%100)!=0)) ||((Year%400)==0)) { if(Second_data >60) { Second_data--; } else { if(Second_data == 60) { Day = 29; Month = 1; return; } } } //计算月日 for(Month = 0;Days[Month] { Second_data -= Days[Month]; } Day = Second_data; Month = Month+1; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |