日期与天数互转的实现代码(VS2022 C++)

这篇博客介绍了如何使用C++在Windows 10环境下通过Visual Studio 2022实现日期转换,包括年月日到天数的转换和天数到年月日的转换。此外,还详细展示了闰年的判断方法,并提供了测试用例来验证代码的正确性。

日期是公历日期,即某年某月某日;天数指的是公历纪年的天数,即公元元年(1年)1月1日作为第一天,其他天数依次类推。

在Win10系统中使用VS2022的C++实现。

在VS2022中创建空项目,添加文件“main.cpp”,并输入如下代码:

#include <iostream>
#include <math.h>

//	一个100年(非第四个100年)包含的天数 24个闰年76个平年
#define _100_years_day_ (24*366+76*365)
//	一个400年包含的天数
//	前三个100年包含24个闰年76个平年;第四个100年是25个闰年75个平年
#define _400_years_day_ ((24 * 366 + 76 * 365) * 3 + 25 * 366 + 75 * 365)
//	一个4年包含的天数,3个平年,一个闰年:(3*365+366)
#define _4_years_day_ (3*365+366)

//	判断年份year是否是闰年.
bool is_leap_year(int year)
{
	bool bRes = false;
	//	若year不是4的倍数,则不是闰年
	if (year % 4 != 0)	return false;
	//	若year是4的倍数、但不是100的倍数,则是闰年
	if (year % 100 != 0) return true;
	//	若year是4的倍数、并且是100的倍数、还是400的倍数,则是闰年
	if (year % 400 == 0) return true;
	//	若year是4的倍数、并且是100的倍数、但不是400的倍数,则不是闰年
	return false;
}
//	计算year年有多少天
int get_year_days(int year)
{
	//	闰年366天
	if (is_leap_year(year)) return 366;
	//	平年365天
	return 365;
}

//	计算前n年的总天数.
int compute_n_yers_day(int n)
{
	if (0 == n) return 0;
	int nRes = 0;
	div_t divRes;	//	整数除法运算的结果
	divRes = div(n, 400);	//	包含几个400年
	nRes += divRes.quot * _400_years_day_;
	//	包含几个100年.
	divRes = div(divRes.rem, 100);
	nRes += divRes.quot * _100_years_day_;
	//	包含几个4年
	divRes = div(divRes.rem, 4);
	nRes += divRes.quo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alexabc3000

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

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

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

打赏作者

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

抵扣说明:

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

余额充值