zoukankan      html  css  js  c++  java
  • C++ 计算任意两个日期之间的天数

    C++写的一个计算两个日期之间天数的小程序:

    [cpp] view plain copy
     
    1. #include <Windows.h>  
    2. #include <stdio.h>  
    3.   
    4.   
    5. struct tagDate  
    6. {   
    7.     int year;  
    8.     int month;  
    9.     int day;  
    10. };  
    11.   
    12. //设置日期  
    13. void SetDate(int y, int m, int d, tagDate *date)  
    14. {   
    15.     date->year = y;  
    16.     date->month = m;  
    17.     date->day = d;  
    18. }   
    19.   
    20. //是否闰年  
    21. int IsLeapYear(int year)    
    22. {   
    23.     return ((year%4==0) && (year%100!=0)||year%400==0);   
    24. }   
    25.   
    26. //得到date.month的最大天数  
    27. int GetLastDay(tagDate date)   
    28. {   
    29.     int num;  
    30.     switch(date.month)   
    31.     {  
    32.     case 1:  
    33.     case 3:  
    34.     case 5:  
    35.     case 7:  
    36.     case 8:  
    37.     case 10:  
    38.     case 12:  
    39.         num=31;  
    40.         break;  
    41.     case 2:  
    42.         num = 28+IsLeapYear(date.year);   
    43.         break;   
    44.     default:   
    45.         num = 30;   
    46.     }   
    47.     return num;   
    48. }  
    49.   
    50. //日期是否合法  
    51. int IsDateValid(tagDate date)  
    52. {   
    53.     if(date.year <0 || date.month <1 || date.month> 12)   
    54.         return 0;  
    55.   
    56.     if(date.day <1 || date.day> GetLastDay(date))  
    57.         return 0;  
    58.   
    59.     return 1;  
    60. }   
    61.   
    62. //date+1  
    63. void AddDay(tagDate *date)  
    64. {  
    65.     date->day++;  
    66.     if(date->day > GetLastDay(*date))  
    67.     {  
    68.         date->day = 1;  
    69.         date->month++;  
    70.         if(date->month > 12)  
    71.         {  
    72.             date->month = 1;  
    73.             date->year++;  
    74.         }  
    75.     }  
    76. }  
    77.   
    78. //date1比date2小返回值为1,否则为0  
    79. int Compare(tagDate date1, tagDate date2)  
    80. {  
    81.     if(date1.year < date2.year)  
    82.         return 1;  
    83.     if(date1.year <= date2.year && date1.month < date2.month)  
    84.         return 1;  
    85.     if(date1.year <= date2.year && date1.month <= date2.month && date1.day < date2.day)  
    86.         return 1;  
    87.   
    88.     return 0;  
    89. }   
    90. //计算两个日期的间隔天数  
    91. long DateDiff(tagDate date1, tagDate date2)  
    92. {  
    93.     long delta = 0;  
    94.     tagDate date3;  
    95.     //若date1 > date2,交换date1,date2  
    96.     if(!Compare(date1, date2))  
    97.     {  
    98.         date3 = date2;  
    99.         date2 = date1;  
    100.         date1 = date3;  
    101.     }  
    102.   
    103.     //date1比date2少时,date1日期加1  
    104.     while(Compare(date1,date2))  
    105.     {  
    106.         AddDay(&date1);  
    107.         delta++;  
    108.     }  
    109.     return delta;  
    110. }   
    111.   
    112. void main()  
    113. {  
    114.     tagDate date1, date2;  
    115.     int y, m, d;  
    116.       
    117.     system("cls");  
    118.     while(1)  
    119.     {  
    120.         puts(" Input   date1  ");  
    121.         scanf("%d,%d,%d", &y, &m, &d);  
    122.         SetDate(y, m, d, &date1);  
    123.         if(!IsDateValid(date1))  
    124.         {   
    125.             puts( "date1   is   invalid !");  
    126.             exit(1);  
    127.         }  
    128.   
    129.         puts(" Input   date2  ");  
    130.         scanf("%d,%d,%d", &y, &m, &d);  
    131.         SetDate(y, m, d, &date2);  
    132.         if(!IsDateValid(date2))  
    133.         {  
    134.             puts( "date2   is   invalid !");  
    135.             exit(1);  
    136.         }  
    137.         //  
    138.         printf(" Result : [%ld]", DateDiff(date1,date2));  
    139.     }  
    140. }  

    https://blog.csdn.net/hellokandy/article/details/52194332

  • 相关阅读:
    环境变量学习(二)Mac 可设置环境变量的位置
    环境变量学习(一)简介、查看
    shell学习(二)安装shell环境
    npm学习(十八)npm scripts 使用指南
    nodemon学习(二)实战
    nodemon学习(一)简介、安装、配置、使用
    Error: listen EADDRINUSE 127.0.0.1:8888错误解决
    树莓派创建wifi热点
    JavaScript中的数据类型转换
    Packstack 搭建 OpenStack 报 MariaDB 错误的处理
  • 原文地址:https://www.cnblogs.com/findumars/p/8732310.html
Copyright © 2011-2022 走看看