C语言根据日期取其位于一年中的第几天

#include <iostream>
#include <stdlib.h>

using namespace std;

bool isLeapYear( int iYear )
{//判断闰年
	if( iYear < 0 )
		return false;
	
	if( !(iYear % 400) )
		return true;

	if( !( iYear % 100 ))
		return false;

	if( !( iYear % 4 ) )
		return true;

	return false;
}

int GetDayInYear( int iYear, int iMonth, int iDay )
{//成功则返回1-366中的一个数失败则返回-1
	if( iYear < 0 )
		return -1;

	if( iMonth > 13 || iMonth < 1 )
		return -1;

	const int leapYear[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	const int noLeapYear[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	int i;
	int iCurMonth = iMonth - 1;
	int iIndex = 0;
	if( isLeapYear( iYear ) )
	{//闰年
		for( i = 0; i < iCurMonth; i++ )
		{
			iIndex += leapYear[i];
		}

		if( iDay > leapYear[i] || iDay < 1 )
			return -1;

		iIndex += iDay;
	}
	else
	{
		for( i = 0; i < iCurMonth; i++ )
		{
			iIndex += noLeapYear[i];
		}

		if( iDay > noLeapYear[i] || iDay < 1 )
			return -1;

		iIndex += iDay;
	}

	return iIndex;
}

int main( int argc, char* argv[] )
{
	printf( "Day in Year: %d\n" ,GetDayInYear( 2000, 2, 30 ) );

	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值