概述
今天突发奇想想要编写一个关于两个时间点相差多少天的程序,在网上参考了许多,其中有一个程序最有趣,和大家一起分享,代码如下:
#include"iostream"
using namespace std;
int day_Diff(int year_start, int month_start, int day_start, int year_end, int month_end, int day_end)
{
int y2 = 0, m2 = 0, d2 = 0;
int y1 = 0, m1 = 0, d1 = 0;
//该算法总体思想是计算给定日期到 0年3月1日的天数,然后相减,获取天数的间隔。
m1 = (month_start + 9) % 12;
//m1 = (month_start + 9) % 12; 用于判断日期是否大于3月(2月是判断闰年的标识),还用于纪录到3月的间隔月数。
y1 = year_start - m1 / 10;
//y1 = year_start - m1/10; 如果是1月和2月,则不包括当前年(因为是计算到0年3月1日的天数)。
d1 = 365 * y1 + y1 / 4 - y1 / 100 + y1 / 400 + (m1 * 306 + 5) / 10 + (day_start - 1);
//365*y1 是不算闰年多出那一天的天数,y1/4 - y1/100 + y1/400 是加所有闰年多出的那一天,可以验证其正确性,所有的闰年.
//(m1*306 + 5)/10 用于计算到当前月到3月1日间的天数,306=365-31-28(1月和2月),5是全年中不是31天月份的个数,可以有验证正确,这也是数学的魅力,知识的重要性。
//(day_start - 1) 用于计算当前日到1日的间隔天数。
m2 = (month_end + 9) % 12;
y2 = year_end - m2 / 10;
d2 = 365 * y2 + y2 / 4 - y2 / 100 + y2 / 400 + (m2 * 306 + 5) / 10 + (day_end - 1);
return (d2 - d1);
}
int main() {
int year_start, month_start, day_start, year_end, month_end, day_end;
cout << "初始时间:" << endl;
cin >> year_start;
cin >> month_start;
cin >> day_start;
cout << "末尾时间:" << endl;
cin >> year_end;
cin >> month_end;
cin >> day_end;
cout << "两时间段相差为:"<< day_Diff(year_start, month_start, day_start, year_end, month_end, day_end) << endl;
system("pause");
return 0;
}
最后
以上就是留胡子蜡烛为你收集整理的C++编写两个时间点相差多少天的程序的全部内容,希望文章能够帮你解决C++编写两个时间点相差多少天的程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复