单片机中需要转换时间戳,没有现成的函数可以用,为了提高单片机的效率,写了一个,参考如下:
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; } 以上是内存溢出为你收集整理的C语言编写 秒数转换成时间戳 UTC时间 函数实现全部内容,希望文章能够帮你解决C语言编写 秒数转换成时间戳 UTC时间 函数实现所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)