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

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条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效