/*
* 用time(NULL)返回值 计算当前时间
* @author 李政 <[email protected]>
*/
#include<stdio.h>
#include<time.h>
#include<stdbool.h>
int main()
{
//定义一个数组每个月的天数
char mon_arr[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//用函数获取从1970年至今的总的秒数
long sum_sec = time(NULL);
char mon,day,hor,min,sec;
short year=1970;
//采用取余数的方法 计算现在的时间
sec = sum_sec % 60;
min = sum_sec / 60 %60;
//位于东八区,比世界统一时间(零区时间)快8个小时
hor = (sum_sec / 3600+8)%24;
//算出总的天数
long sum_day =(sum_sec/3600+8) / 24+1;
while(sum_day >=365)
{
//判断闰年然后 总的天数减去每年的天数
if((year%4==0&&year%100!=0)||year%400==0)
{
sum_day -=366;
}
else
{
sum_day-=365;
}
year++;//每减去1年的天数 年要加1的
}
//判断闰年 确定二月分的天数
if(year %4==0&&year%100!=0||year%400==0)
{
mon_arr[1]=29;
}
//用剩余的天数减去每个月的天数
for(mon =1 ;mon<13;mon++) //mon++判断错误然后返回的就是这个月
{
if(sum_day>mon_arr[mon-1])
{
sum_day -= mon_arr[mon-1];
}
else
{
day =sum_day; //这是剩余的天数
break;
}
}
printf("%hd年%hhd月%hhd日%hhd:%hhd:%hhd\n",year,mon,day,hor,min,sec);
return 0;
}
用time(NULL)返回值手动计算当前时间 (要考虑时区)
猜你喜欢
转载自blog.csdn.net/weixin_42205987/article/details/82084753
今日推荐
周排行