文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++怎么实现比较日期大小

2023-07-05 21:15

关注

今天小编给大家分享一下C++怎么实现比较日期大小的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、目的

用来比较两个日期。日期格式:2023-03-31 09:16:56。

二、代码

//std::wstring strA = L"2023-03-31 09:16:56";//std::wstring strB = L"2023-03-31 09:21:34";bool LessThanEx(std::wstring strA, std::wstring strB){std::wstring strLeftA, strRightA;std::wstring strLeftB, strRightB;{std::wstring strLeft, strRight;std::size_t nIndex = strA.find(L" ");if (nIndex!=std::string::npos){strLeft = strA.substr(0,nIndex);strRight = strA.substr(nIndex+1);std::wstring wsDivide = L"-";strLeft.replace(strLeft.find(wsDivide),wsDivide.length(),L"");strLeft.replace(strLeft.find(wsDivide),wsDivide.length(),L"");wsDivide = L":";strRight.replace(strRight.find(wsDivide),wsDivide.length(),L"");strRight.replace(strRight.find(wsDivide),wsDivide.length(),L"");}strLeftA = strLeft;strRightA = strRight;}{std::wstring strLeft, strRight;std::size_t nIndex = strB.find(L" ");if (nIndex!=std::string::npos){strLeft = strB.substr(0,nIndex);strRight = strB.substr(nIndex+1);std::wstring wsDivide = L"-";strLeft.replace(strLeft.find(wsDivide),wsDivide.length(),L"");strLeft.replace(strLeft.find(wsDivide),wsDivide.length(),L"");wsDivide = L":";strRight.replace(strRight.find(wsDivide),wsDivide.length(),L"");strRight.replace(strRight.find(wsDivide),wsDivide.length(),L"");}strLeftB = strLeft;strRightB = strRight;}__int64 nLeftA = std::stoi(strLeftA);__int64 nLeftB = std::stoi(strLeftB);__int64 nRightA = std::stoi(strRightA);__int64 nRightB = std::stoi(strRightB);if(nLeftA < nLeftB){return true;}else if(nLeftA > nLeftB){return false;}else{if(nRightA >= nRightB){return false;}return true;}return true;}//CString strA = _T("2023-03-31 09:16:56");//CString strB = _T("2023-03-31 09:21:34");bool LessThan(CString strA, CString strB){CString strLeftA, strRightA;CString strLeftB, strRightB;{CString strLeft, strRight;int nIndex = strA.Find(_T(" "));if (nIndex > -1){strLeft = strA.Left(nIndex);strRight = strA.Mid(nIndex+1,strA.GetLength() - nIndex-1);strLeft.Replace(_T("-"),_T(""));strRight.Replace(_T(":"),_T(""));}strLeftA = strLeft;strRightA = strRight;}{CString strLeft, strRight;int nIndex = strB.Find(_T(" "));if (nIndex > -1){strLeft = strB.Left(nIndex);strRight = strB.Mid(nIndex+1,strB.GetLength() - nIndex-1);strLeft.Replace(_T("-"),_T(""));strRight.Replace(_T(":"),_T(""));}strLeftB = strLeft;strRightB = strRight;}__int64 nLeftA = _tstoi64(strLeftA);__int64 nLeftB = _tstoi64(strLeftB);__int64 nRightA = _tstoi64(strRightA);__int64 nRightB = _tstoi64(strRightB);if(nLeftA < nLeftB){return true;}else if(nLeftA > nLeftB){return false;}else{if(nRightA >= nRightB){return false;}return true;}return true;}

三、补充

除了比较大小,C++还可以实现计算日期相差多少天,下面是实现代码,希望对大家有所帮助

#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;bool isLeap(int year) {return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0);}int main() {//定义好平年和闰年每月的天数int monthDays[13][2] = {{0,0},{31,31},{28,29},{30,30},{31,31},{30,30},{31,31},{30,30},{31,31},{30,30},{31,31},{30,30},{31,31}};int time1, year1, month2, days1;int time2, year2, month3, days2;int numbers =1;// 输入两个日期cout << "输入两个日期,空格分隔";cin >> time1 >> time2;if (time1>time2){int temp = time1;time1 = time2;time2 = temp;}//拆解日期,分为年,月,号year1 = time1 / 10000; month2 = time1 / 100 % 100; days1 = time1 % 100;year2 = time2 / 10000; month3 = time2 / 100 % 100; days2 = time2 % 100;//第一个日期 累加到 第二个日期while (year1 < year2 || month2 < month3 || days1 < days2) {days1++;// 在第一个日期基础上  加一天//加一天后,相应的月,年可能也要做一定的变化if (days1 == monthDays[month2][isLeap(year1)]+1) {//当前号超过当前月最高天数:月份加1,号变成下月的1号month2++;days1 = 1;}if (month2 == 13) {//月份超过12个月 :年份加1,月份变成下年的1月year1++;month2 = 1;}numbers++;}cout << numbers << endl;return 0;}

以上就是“C++怎么实现比较日期大小”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯