c语言:获取系统当前时间,设计年份计算月、日、时、分、秒等计算函数,然后调用这些函数之后显示你现在的时间。

#include<stdio.h>
#include<time.h>
#define u8 unsigned char

u8 isRunNian(int year);
int getYear(int *day);
int getMonth(int *day,int year);
int getMonthOrDay(int year,int month);
int getHour(long second);
int getMinute(long second);
int getSecond(long second); 
int main()
{

	int second = time(NULL);
	int day = (second/60/60+8)/24+1;
	int year= getYear(&day);
	printf("%4d年%2d月%2d日 %2d:%2d:%2d",
		year,getMonth(&day,year),day,
		getHour(second),getMinute(second),getSecond(second));
	return 0;
}

int getMonth(int *day,int year) 
{
	int month=1;
	while(*day>getMonthOrDay(year,month))
	{
		switch(month)
		{
			case 2:
				*day-=28;
				if(isRunNian(year))
				{
					*day-=1;
				}
				break;
			case 4:
			case 6:
			case 9:
			case 11:*day-=30;break;
			default:*day-=31;break;
		}
		month++;
	}
	return month;
}

int getMonthOrDay(int year,int month)
{
	int day;
	switch(month)
	{
		case 2:
			day=28;
			if(isRunNian(year))
			{
				day=29;
			}
			break;
		case 4:
		case 6:
		case 9:
		case 11:day=30;break;
		default:day=31;break;
	}
	return day;
}

int getYear(int *day)
{
	int year=1970;
	while(*day>365)//2000   366
	{
		*day-=365;
		if(isRunNian(year))
		{
			*day-=1;
		}
		year++;
	}
	if(*day==0)
	{
		year--;
		*day = 1;
	}
	return year;
}

u8 isRunNian(int year)
{
	if(year%400==0 || (year%4==0&&year%100!=0))
	{
		return 1;//代表是闰年 
	}
	return 0;//代表不是闰年 
}

int getHour(long second)
{
	//当前系统时间是北京时间,但是获取的是世界协调时 ,所以我们需要加上8, 
	return second/60/60%24+8;
}

int getMinute(long second)
{
	return second/60%60;
}

int getSecond(long second)
{
	return second%60;
}


世界协调时

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丘比特惩罚陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值