日期是公历日期,即某年某月某日;天数指的是公历纪年的天数,即公元元年(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

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

被折叠的 条评论
为什么被折叠?



