Advertisement
avr39ripe

cppDateDiff

Apr 21st, 2021
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.92 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. bool leapYear(int year)
  4. {
  5.     return (year % 400 == 0) or ((year % 100 != 0) and (year % 4 == 0));
  6. }
  7.  
  8. int daysTillMonth(int month, int year)
  9. {
  10.     const int monthInYear{ 12 };
  11.     const int daysInMonth[monthInYear]{ 31,28 + leapYear(year),31,30,31,30,31,31,30,31,30,31 };
  12.     int days{ 0 };
  13.  
  14.     --month;
  15.     for (int curMonth{ 0 }; curMonth < month; days += daysInMonth[curMonth++]);
  16.  
  17.     return days;
  18. }
  19.  
  20. int dateDiff(int dayBegin, int monthBegin, int yearBegin, int dayEnd, int monthEnd, int yearEnd)
  21. {
  22.     const int daysInYear{ 365 };
  23.     int days{ (yearEnd - yearBegin) * daysInYear };
  24.  
  25.     for (int year{ yearBegin }; year <= yearEnd; days += leapYear(year++));
  26.  
  27.     days -= (daysTillMonth(monthBegin, yearBegin) + dayBegin);
  28.     days += (daysTillMonth(monthEnd, yearEnd) + dayEnd);
  29.  
  30.     return days;
  31. }
  32.  
  33. int main()
  34. {
  35.     std::cout << dateDiff(15, 5, 1800, 15, 5, 2020) << '\n';
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement