utc时间转换为时分秒_C语言实现将时间戳转换为年月日时分秒和将年月日时分秒转换为时间戳...

utc时间转换时分秒_C语⾔实现将时间戳转换为年⽉⽇时分秒和将年⽉⽇时分秒转换为时间戳...
#include
#include
typedef unsigned int time_t;
struct tm {
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* ⼀个⽉中的⽇期 - 取值区间为[1,31] */饮用水净化器
int tm_mon; /* ⽉份(从⼀⽉开始,0代表⼀⽉) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
};
const char Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
void localtime(time_t time,struct tm *t)
{
unsigned int Pass4year;
int hours_per_year;
if(time < 0)
{
time = 0;
}
//取秒时间
t->tm_sec=(int)(time % 60);
time /= 60;
//取分钟时间
t->tm_min=(int)(time % 60);
time /= 60;
//取过去多少个四年,每四年有 1461*24 ⼩时
Pass4year=((unsigned int)time / (1461L * 24L));
//计算年份
t->tm_year=(Pass4year << 2) + 1970;
//四年中剩下的⼩时数
time %= 1461L * 24L;
/
/校正闰年影响的年份,计算⼀年中剩下的⼩时数for (;;)
{
//⼀年的⼩时数
hours_per_year = 365 * 24;
//判断闰年
if ((t->tm_year & 3) == 0)
{
//是闰年,⼀年则多24⼩时,即⼀天
hours_per_year += 24;
}
if (time < hours_per_year)
{
break;
}
t->tm_year++;
time -= hours_per_year;
}
挤压件//⼩时数
t->tm_hour=(int)(time % 24);
//⼀年中剩下的天数
time /= 24;
//假定为闰年
time++;
//校正闰年的误差,计算⽉份,⽇期
if((t->tm_year & 3) == 0)
{
if (time > 60)
{
time--;
}
else
{
if (time == 60)
{
t->tm_mon = 1;不锈钢旗杆制作
t->tm_mday = 29;
return ;
}
}
}
//计算⽉⽇
for (t->tm_mon = 0; Days[t->tm_mon] < time;t->tm_mon++)
{
time -= Days[t->tm_mon];
}
t->tm_mday = (int)(time);
return;
}
static time_t mon_yday[2][12] =
{
{0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334},
{0,31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335},
};
int isleap(int year)
{
return (year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0);
}
time_t mktime(struct tm dt)
{
time_t result;
int i =0;
// 以平年时间计算的秒数
result = (dt.tm_year - 1970) * 365 * 24 * 3600 +
自动削皮机(mon_yday[_year)][dt.tm_mon-1] + dt.tm_mday - 1) * 24 * 3600 + dt.tm_hour * 3600 + dt.tm_min * 60 + dt.tm_sec;
// 加上闰年的秒数
for(i=1970; i < dt.tm_year; i++)
{
if(isleap(i))
紫砂饮水机{
result += 24 * 3600;
}
}
return(result);
}
void main()
{
time_t time = 0;
time_t time2 = 0;
long i = 0;
struct tm t;
//2018-01-01 01:01:01
time = 1514768461;
// 验证⼀个周期4年 ⼀天打印⼀次
for(i=0;i
{
装卸过桥localtime(time,&t);
printf("A time:%d\r\n",time);
printf("A %04d-%02d-%02d %02d:%02d:%02d\r\n",t.tm__mon+___
_sec); t.tm_mon+=1;//转换时⽉份需要加1,因为⽉份是从0开始的
time2 = mktime(t);//将localtime得到年⽉⽇时分秒再次转换成时间戳,验证算法是否正确
printf("B time:%d\r\n",time2);
memset((void*)&t,0x00,sizeof(t));
localtime(time2,&t);
printf("B %04d-%02d-%02d %02d:%02d:%02d\r\n",t.tm__mon+____sec); memset((void*)&t,0x00,sizeof(t));
time += 24*3600;
}
return;
}

本文发布于:2024-09-23 00:39:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/241240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   年份   计算   转换   时分秒   开始   剩下
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议