计算当前日期距离下个生日还有多少天(希望能够有点解释因为刚入门谢谢)
你可以看下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