加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言编写 秒数转换成时间戳 UTC时间 函数实现

发布时间:2020-12-15 04:57:38 所属栏目:百科 来源:网络整理
导读:单片机中需要转换时间戳,没有现成的函数可以用,为了提高单片机的效率,写了一个,参考如下: 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; unsig

单片机中需要转换时间戳,没有现成的函数可以用,为了提高单片机的效率,写了一个,参考如下:

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;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读