Argentum_02

date.cpp

Apr 9th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.88 KB | None | 0 0
  1. #include "date.h"
  2.  
  3. using namespace std;
  4.  
  5. string error ="";
  6.  
  7.  
  8.     Date::Date(){
  9.         year = 0;
  10.         month = 0;
  11.         day = 0;
  12.         sdate = "";
  13.     }
  14.      Date::Date(const int &y,const int &m,const int &d){
  15.         year = y;
  16.         month = m;
  17.         day = d;
  18.         stringstream str;
  19.         str << setfill('0') << setw(4) << year << '-'
  20.                  << setw(2) << month << '-' << setw(2) << day;
  21.         sdate = str.str();
  22.     }
  23.     void Date::printDate() const{
  24.          cout << setfill('0') << setw(4) << year << '-'
  25.          << setw(2) << month << '-' << setw(2) << day;
  26.      }
  27.     int Date::getYear() const{
  28.         return year;
  29.     }
  30.     int Date::getMonth() const{
  31.         return month;
  32.     }
  33.     int Date::getDay() const{
  34.         return day;
  35.     }
  36.  
  37.     string Date::getDate() const{
  38.         return sdate;
  39.     }
  40.  
  41.     bool checkFormat(string str){
  42.         int shetchik = count(str.begin(),str.end(),'-');
  43.         if(str[str.length()-1]=='-' &&  shetchik>2 || shetchik<2){
  44.             return false;
  45.         }
  46.         for(char i:str){
  47.             if((i<'0' || i>'9')&& i!='-'){
  48.                 return false;
  49.             }
  50.  
  51.         }
  52.         return true;
  53.     }
  54.  
  55. //  Date ParseDate(istringstream &sstr){
  56. //
  57. //      Date res;
  58. //      string str;
  59. //      sstr >> str;
  60. //      stringstream j(str);
  61. //      //getline(sstr,str);
  62. //      error = str;
  63. //      if(!checkFormat(str)){
  64. //
  65. //          throw invalid_argument("");
  66. //      }
  67. //
  68. //      string parse;
  69. //      //int i = str.find('-',1);
  70. //      getline(j,parse,'-');
  71. ////        if(i<1){
  72. ////            throw invalid_argument("");
  73. ////        }
  74. //      if(parse.empty()){
  75. //          throw invalid_argument("");
  76. //      }
  77. //      //parse = str.substr(0,i);
  78. //      //str.erase(0,i+1);
  79. //
  80. //      res.year = stoi(parse);
  81. //      j.ignore(1);
  82. //      if(j.peek()=='-'){
  83. //          getline(j,parse,'-');
  84. //          j.ignore(1);
  85. //          getline(j,parse,'-');
  86. //          throw runtime_error("Month value is invalid: " + parse);
  87. //      }
  88. //      //i = str.find('-',1);
  89. //      getline(j,parse,'-');
  90. //      //parse = str.substr(0,i);
  91. //      if(j.eof()){
  92. //          throw invalid_argument("");
  93. //      }
  94. ////        if(find(parse.begin(),parse.end(),'-')!=parse.end()){
  95. ////                            throw invalid_argument("");
  96. ////                        }
  97. //
  98. ////        if(str.find('-')<1){
  99. ////                        throw runtime_error("Month value is invalid: " + str.substr(0,str.find('-',1)));
  100. ////                }
  101. ////        str.erase(0,i+1);
  102. //      j.ignore(1);
  103. //      if(j.peek()=='-'){
  104. //          getline(j,parse,'-');
  105. //          j.ignore(1);
  106. //          getline(j,parse,'-');
  107. //          throw runtime_error("Day value is invalid: " + j.str());
  108. //      }
  109. //      res.month = stoi(parse);
  110. //      if(res.month<1 || res.month > 12 || res.month /100 > 0){
  111. //          throw runtime_error("Month value is invalid: " + parse);
  112. //      }
  113. //      getline(j,parse,'-');
  114. //      if(!j.eof()){
  115. //          throw invalid_argument("");
  116. //      }
  117. ////        if(find(str.begin(),str.end(),'-')!=str.end()){
  118. ////                                    throw invalid_argument("");
  119. ////                                }
  120. ////        if(str.find('-')<1){
  121. ////            res.day = stoi(str);
  122. ////            throw runtime_error("Day value is invalid: " + str);
  123. ////        }
  124. //      res.day = stoi(parse);
  125. //
  126. //      if(res.day<1 || res.day > 31 || res.day /100 > 0){
  127. //          throw runtime_error("Day value is invalid: " + parse);
  128. //      }
  129. ////        if(res.day<1 || res.day > 31 || res.day /100 > 0){
  130. ////                j << res.day;
  131. ////                    throw runtime_error("Day value is invalid: " + j.str());
  132. ////                }
  133. //      //sstr.str(str);
  134. //      return res;
  135. //  }
  136.  
  137.     Date ParseDate(istringstream& date_stream) {
  138.         //string date = date_stream.str();
  139.       //istringstream date_stream(date);
  140.         //string date = date_stream.str();
  141.       bool ok = true;
  142.  
  143.       int year;
  144.       ok = ok && (date_stream >> year);
  145.       //cout << year;
  146.       ok = ok && (date_stream.peek() == '-');
  147.       date_stream.ignore(1);
  148.  
  149.       int month;
  150.       ok = ok && (date_stream >> month);
  151.       ok = ok && (date_stream.peek() == '-');
  152.       date_stream.ignore(1);
  153.  
  154.       int day;
  155.       ok = ok && (date_stream >> day);
  156.       //ok = ok && date_stream.eof();
  157.  
  158.       if (!ok) {
  159.         throw logic_error("Wrong date format: date");
  160.       }
  161.       return Date(year, month, day);
  162.     }
  163.  
  164.     Date ParseDate(istream& date_stream) {
  165.             //string date;
  166.             //getline(date_stream,date);
  167.           //istringstream date_stream(date);
  168.           bool ok = true;
  169.  
  170.           int year;
  171.           ok = ok && (date_stream >> year);
  172.           ok = ok && (date_stream.peek() == '-');
  173.           date_stream.ignore(1);
  174.  
  175.           int month;
  176.           ok = ok && (date_stream >> month);
  177.           ok = ok && (date_stream.peek() == '-');
  178.           date_stream.ignore(1);
  179.  
  180.           int day;
  181.           ok = ok && (date_stream >> day);
  182.           ok = ok && date_stream.eof();
  183.  
  184.           if (!ok) {
  185.             throw logic_error("Wrong date format: date");
  186.           }
  187.           return Date(year, month, day);
  188.         }
  189.  
  190. //  Date ParseDate(istream &sstr){
  191. //
  192. //          Date res;
  193. //          string str;
  194. //          sstr >> str;
  195. //          //getline(sstr,str);
  196. //          error = str;
  197. //          if(!checkFormat(str)){
  198. //
  199. //              throw invalid_argument("");
  200. //          }
  201. //          stringstream j;
  202. //          string parse;
  203. //          int i = str.find('-',1);
  204. //          if(i<1){
  205. //              throw invalid_argument("");
  206. //          }
  207. //          parse = str.substr(0,i);
  208. //          str.erase(0,i+1);
  209. //          res.year = stoi(parse);
  210. //
  211. //          i = str.find('-',1);
  212. //
  213. //          parse = str.substr(0,i);
  214. //          if(find(parse.begin(),parse.end(),'-')!=parse.end()){
  215. //                              throw invalid_argument("");
  216. //                          }
  217. //          if(str.find('-')<1){
  218. //                          throw runtime_error("Month value is invalid: " + str.substr(0,str.find('-',1)));
  219. //                  }
  220. //          str.erase(0,i+1);
  221. //          res.month = stoi(parse);
  222. //          if(res.month<1 || res.month > 12 || res.month /100 > 0){
  223. //              throw runtime_error("Month value is invalid: " + parse);
  224. //          }
  225. //
  226. //          if(find(str.begin(),str.end(),'-')!=str.end()){
  227. //                                      throw invalid_argument("");
  228. //                                  }
  229. //          if(str.find('-')<1){
  230. //              res.day = stoi(str);
  231. //              throw runtime_error("Day value is invalid: " + str);
  232. //          }
  233. //          res.day = stoi(str);
  234. //
  235. //          if(res.day<1 || res.day > 31 || res.day /100 > 0){
  236. //                  j << res.day;
  237. //                      throw runtime_error("Day value is invalid: " + j.str());
  238. //                  }
  239. //          //sstr.str(str);
  240. //          return res;
  241. //      }
  242.  
  243.  
  244.     const bool operator < (const Date &arg1,const Date &arg2){
  245.         return vector<int>{arg1.year, arg1.month, arg1.day} <
  246.               vector<int>{arg2.year, arg2.month, arg2.day};
  247.     }
  248.  
  249.     const bool operator == (const Date &arg1,const Date &arg2){
  250.         return vector<int>{arg1.year, arg1.month, arg1.day} ==
  251.                       vector<int>{arg2.year, arg2.month, arg2.day};
  252.         }
  253. const bool operator != (const Date &arg1,const Date &arg2){
  254.     return vector<int>{arg1.year, arg1.month, arg1.day} !=
  255.                   vector<int>{arg2.year, arg2.month, arg2.day};
  256.             }
  257.  
  258.  
  259. const bool operator > (const Date &arg1,const Date &arg2){
  260.     return vector<int>{arg1.year, arg1.month, arg1.day} >
  261.                   vector<int>{arg2.year, arg2.month, arg2.day};
  262.     }
  263.  
  264. const bool operator <= (const Date &arg1,const Date &arg2){
  265.     return vector<int>{arg1.year, arg1.month, arg1.day} <=
  266.                   vector<int>{arg2.year, arg2.month, arg2.day};
  267.         }
  268.  
  269. const bool operator >= (const Date &arg1,const Date &arg2){
  270.     return vector<int>{arg1.year, arg1.month, arg1.day} >=
  271.                   vector<int>{arg2.year, arg2.month, arg2.day};
  272.             }
  273.  
  274.     ostream &operator <<(ostream &ostr,const Date &dt){
  275.         ostr << dt.sdate;
  276.         return ostr;
  277.     }
Add Comment
Please, Sign In to add comment