c语言实现日期间隔天数

直接代码,有错误或更好的办法请留言,谢谢

typedef struct _Date {
	int year;
	int month;
	int day;
}Date;

int getDateDiff(Date start, Date end) {
	int mon[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int n = 0;
	int i, t;
	//计算 [start, end) 的整年的天数
	for (i = start.year; i < end.year; i++) {
		if (0 == i % 4 && 0 != i % 100 || 0 == i % 400)
			n += 366;
		else
			n += 365;
	}
	//减去开始年多余的部分
	if (0 == start.year % 4 && 0 != start.year % 100 || 0 == start.year % 400)
		mon[2] = 29;
	else
		mon[2] = 28;
	n = n - start.day;
	for (i = 1; i < start.month; i++) {
		n = n - mon[i];
	}
	
	//加上最后一年缺少的天数
	if (0 == end.year % 4 && 0 != end.year % 100 || 0 == end.year % 400)
		mon[2] = 29;
	else
		mon[2] = 28;
	n = n + end.day;
	for (i = 1; i < end.month; i++) {
		n = n + mon[i];
	}

	return n;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值