• 定义一个Date类,创建两个对象存放两个日期,求两个日期的间隔(单位:天)


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    题目:

    定义一个Date类,创建两个对象存放两个日期,求两个日期的间隔(单位:天)。

    代码:

    1. #include<iostream>
    2. using namespace std;
    3. class CDate
    4. {
    5. private:int year,month,day;
    6. public:
    7. CDate(int y, int m, int d)
    8. {
    9. year=y;month=m;day=d;
    10. }
    11. bool IsLeapYear(int year);
    12. long GetDays();
    13. long operator-(CDate date);
    14. void Show();
    15. };
    16. void CDate::Show()
    17. {
    18. cout<<year<<"-"<<month<<"-"<<day;
    19. }
    20. bool CDate::IsLeapYear(int year)
    21. {
    22. if(0 == year%400 || (0!=year%100 && 0==year%4))
    23. return true;
    24. else
    25. return false;
    26. }long CDate::GetDays()
    27. {
    28. long ret = 0;
    29. int i;
    30. for(i=0; i<year; i++)
    31. {
    32. if(IsLeapYear(i))
    33. ret += 366;
    34. else
    35. ret += 365;
    36. }
    37. switch(month)
    38. {
    39. case 2:
    40. {
    41. ret += 31;
    42. break;
    43. }
    44. case 3:
    45. {
    46. ret += (31+IsLeapYear(year) 29:28);
    47. break;
    48. }
    49. case 4:
    50. {
    51. ret += (31+(IsLeapYear(year) 29:28)+31);
    52. break;
    53. }
    54. case 5:
    55. {
    56. ret += (31+(IsLeapYear(year) 29:28)+31+30);
    57. break;
    58. }
    59. case 6:
    60. {
    61. ret += (31+(IsLeapYear(year) 29:28)+31+30+31);
    62. break;
    63. }
    64. case 7:
    65. {
    66. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30);
    67. break;
    68. }
    69. case 8:
    70. {
    71. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30+31);
    72. break;
    73. }
    74. case 9:
    75. {
    76. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30+31+31);
    77. break;
    78. }
    79. case 10:
    80. {
    81. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30+31+31+30);
    82. break;
    83. }
    84. case 11:
    85. {
    86. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30+31+31+30+31);
    87. break;
    88. }
    89. case 12:
    90. {
    91. ret += (31+(IsLeapYear(year) 29:28)+31+30+31+30+31+31+30+31+30);
    92. break;
    93. }
    94. default:
    95. break;
    96. }
    97. ret += day;
    98. return ret;
    99. }
    100. long CDate::operator-(CDate date)
    101. {
    102. long ret = GetDays()-date.GetDays();
    103. if(0 > ret)
    104. ret = -ret;
    105. return ret;
    106. }
    107. int main()
    108. {
    109. CDate date1(2021, 12, 12);
    110. CDate date2(2020, 12, 01);
    111. long ret = date1-date2;
    112. date1.Show();
    113. cout<<" and ";
    114. date2.Show();
    115. cout<<endl;
    116. cout<<"这两个日期相差的天数为:"<<ret<<"天"<<endl;
    117. }

    结果:


    总结

    提示:这里对文章进行总结:
    例如:以上就是今天要讲的内容,本文仅仅简单介绍了定义一个Date类、并求两个日期的间隔。

  • 相关阅读:
    第2期:大数据岗位有哪些
    Go 学习笔记(86)— Go 方法接受者参数类型选择
    Linux 运维随笔
    想在互联网上年入百万,必须具备这两种能力!
    TextRCNN、TextCNN、RNN
    接口测试框架中的鉴权处理
    Windows驱动开发(一)
    1.1 万员工为小扎个人失误买单,Meta「无差别」大裁员
    [附源码]java毕业设计西柚网购物系统
    【逗老师的无线电】MOTOTRBO CPS导入DMR ID通信录的骚操作
  • 原文地址:https://blog.csdn.net/m0_65420451/article/details/125623990