c++计算当前日期距离下个生日还有多少天

计算当前日期距离下个生日还有多少天(希望能够有点解释因为刚入门谢谢)

你可以看下c++的<time.h>这个头文件,里面的struct tm和time_t是专门用来计算时间的,也就是时间戳,这个时间起点是1900年1,月1日0时0分0秒,单位是秒。你可以先把目前的时间转成时间戳,然后把下一次也转成时间戳,然后两次时间相减得到秒数,秒数除以26*60*60就可以得到天数了,用这个可以不用考虑闰年的影响

#include <iostream>
#include<time.h>
using namespace std;
int standard_to_stamp(char *str_time)
{
	struct tm stm;
	int iY, iM, iD, iH, iMin, iS;
	memset(&stm, 0, sizeof(stm));
	iY = atoi(str_time);
	iM = atoi(str_time + 5);
	iD = atoi(str_time + 8);
	iH = atoi(str_time + 11);
	iMin = atoi(str_time + 14);
	iS = atoi(str_time + 17);
	stm.tm_year = iY - 1900;
	stm.tm_mon = iM - 1;
	stm.tm_mday = iD;
	stm.tm_hour = iH;
	stm.tm_min = iMin;
	stm.tm_sec = iS;
	return (int)mktime(&stm);
}

int main()
{
	time_t now_time = time(NULL);
	struct tm t_tm;
	localtime_s(&t_tm,&now_time); 
	int start_time= (int)mktime(&t_tm);
	int end_time = standard_to_stamp("2022-06-20 0:0:0");
	int days = (end_time - start_time) / 24.0 / 60 / 60;
	cout << "距离下次还有"<<days << "天"<<endl;
	system("pause");
	return 0;
}

 

主要考虑是否为闰年的问题,因为每个月的日期是固定的,这样就容易算出来了,可以先定义一个每月日期的数组

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632