m0_59477555 2021-06-20 00:24 采纳率: 100%
浏览 1507
已采纳

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

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

  • 写回答

3条回答 默认 最新

  • 爱晚乏客游 2021-06-20 02:01
    关注

    你可以看下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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误