Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "date.h"
- using namespace std;
- string error ="";
- Date::Date(){
- year = 0;
- month = 0;
- day = 0;
- sdate = "";
- }
- Date::Date(const int &y,const int &m,const int &d){
- year = y;
- month = m;
- day = d;
- stringstream str;
- str << setfill('0') << setw(4) << year << '-'
- << setw(2) << month << '-' << setw(2) << day;
- sdate = str.str();
- }
- void Date::printDate() const{
- cout << setfill('0') << setw(4) << year << '-'
- << setw(2) << month << '-' << setw(2) << day;
- }
- int Date::getYear() const{
- return year;
- }
- int Date::getMonth() const{
- return month;
- }
- int Date::getDay() const{
- return day;
- }
- string Date::getDate() const{
- return sdate;
- }
- bool checkFormat(string str){
- int shetchik = count(str.begin(),str.end(),'-');
- if(str[str.length()-1]=='-' && shetchik>2 || shetchik<2){
- return false;
- }
- for(char i:str){
- if((i<'0' || i>'9')&& i!='-'){
- return false;
- }
- }
- return true;
- }
- // Date ParseDate(istringstream &sstr){
- //
- // Date res;
- // string str;
- // sstr >> str;
- // stringstream j(str);
- // //getline(sstr,str);
- // error = str;
- // if(!checkFormat(str)){
- //
- // throw invalid_argument("");
- // }
- //
- // string parse;
- // //int i = str.find('-',1);
- // getline(j,parse,'-');
- //// if(i<1){
- //// throw invalid_argument("");
- //// }
- // if(parse.empty()){
- // throw invalid_argument("");
- // }
- // //parse = str.substr(0,i);
- // //str.erase(0,i+1);
- //
- // res.year = stoi(parse);
- // j.ignore(1);
- // if(j.peek()=='-'){
- // getline(j,parse,'-');
- // j.ignore(1);
- // getline(j,parse,'-');
- // throw runtime_error("Month value is invalid: " + parse);
- // }
- // //i = str.find('-',1);
- // getline(j,parse,'-');
- // //parse = str.substr(0,i);
- // if(j.eof()){
- // throw invalid_argument("");
- // }
- //// if(find(parse.begin(),parse.end(),'-')!=parse.end()){
- //// throw invalid_argument("");
- //// }
- //
- //// if(str.find('-')<1){
- //// throw runtime_error("Month value is invalid: " + str.substr(0,str.find('-',1)));
- //// }
- //// str.erase(0,i+1);
- // j.ignore(1);
- // if(j.peek()=='-'){
- // getline(j,parse,'-');
- // j.ignore(1);
- // getline(j,parse,'-');
- // throw runtime_error("Day value is invalid: " + j.str());
- // }
- // res.month = stoi(parse);
- // if(res.month<1 || res.month > 12 || res.month /100 > 0){
- // throw runtime_error("Month value is invalid: " + parse);
- // }
- // getline(j,parse,'-');
- // if(!j.eof()){
- // throw invalid_argument("");
- // }
- //// if(find(str.begin(),str.end(),'-')!=str.end()){
- //// throw invalid_argument("");
- //// }
- //// if(str.find('-')<1){
- //// res.day = stoi(str);
- //// throw runtime_error("Day value is invalid: " + str);
- //// }
- // res.day = stoi(parse);
- //
- // if(res.day<1 || res.day > 31 || res.day /100 > 0){
- // throw runtime_error("Day value is invalid: " + parse);
- // }
- //// if(res.day<1 || res.day > 31 || res.day /100 > 0){
- //// j << res.day;
- //// throw runtime_error("Day value is invalid: " + j.str());
- //// }
- // //sstr.str(str);
- // return res;
- // }
- Date ParseDate(istringstream& date_stream) {
- //string date = date_stream.str();
- //istringstream date_stream(date);
- //string date = date_stream.str();
- bool ok = true;
- int year;
- ok = ok && (date_stream >> year);
- //cout << year;
- ok = ok && (date_stream.peek() == '-');
- date_stream.ignore(1);
- int month;
- ok = ok && (date_stream >> month);
- ok = ok && (date_stream.peek() == '-');
- date_stream.ignore(1);
- int day;
- ok = ok && (date_stream >> day);
- //ok = ok && date_stream.eof();
- if (!ok) {
- throw logic_error("Wrong date format: date");
- }
- return Date(year, month, day);
- }
- Date ParseDate(istream& date_stream) {
- //string date;
- //getline(date_stream,date);
- //istringstream date_stream(date);
- bool ok = true;
- int year;
- ok = ok && (date_stream >> year);
- ok = ok && (date_stream.peek() == '-');
- date_stream.ignore(1);
- int month;
- ok = ok && (date_stream >> month);
- ok = ok && (date_stream.peek() == '-');
- date_stream.ignore(1);
- int day;
- ok = ok && (date_stream >> day);
- ok = ok && date_stream.eof();
- if (!ok) {
- throw logic_error("Wrong date format: date");
- }
- return Date(year, month, day);
- }
- // Date ParseDate(istream &sstr){
- //
- // Date res;
- // string str;
- // sstr >> str;
- // //getline(sstr,str);
- // error = str;
- // if(!checkFormat(str)){
- //
- // throw invalid_argument("");
- // }
- // stringstream j;
- // string parse;
- // int i = str.find('-',1);
- // if(i<1){
- // throw invalid_argument("");
- // }
- // parse = str.substr(0,i);
- // str.erase(0,i+1);
- // res.year = stoi(parse);
- //
- // i = str.find('-',1);
- //
- // parse = str.substr(0,i);
- // if(find(parse.begin(),parse.end(),'-')!=parse.end()){
- // throw invalid_argument("");
- // }
- // if(str.find('-')<1){
- // throw runtime_error("Month value is invalid: " + str.substr(0,str.find('-',1)));
- // }
- // str.erase(0,i+1);
- // res.month = stoi(parse);
- // if(res.month<1 || res.month > 12 || res.month /100 > 0){
- // throw runtime_error("Month value is invalid: " + parse);
- // }
- //
- // if(find(str.begin(),str.end(),'-')!=str.end()){
- // throw invalid_argument("");
- // }
- // if(str.find('-')<1){
- // res.day = stoi(str);
- // throw runtime_error("Day value is invalid: " + str);
- // }
- // res.day = stoi(str);
- //
- // if(res.day<1 || res.day > 31 || res.day /100 > 0){
- // j << res.day;
- // throw runtime_error("Day value is invalid: " + j.str());
- // }
- // //sstr.str(str);
- // return res;
- // }
- const bool operator < (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} <
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- const bool operator == (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} ==
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- const bool operator != (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} !=
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- const bool operator > (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} >
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- const bool operator <= (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} <=
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- const bool operator >= (const Date &arg1,const Date &arg2){
- return vector<int>{arg1.year, arg1.month, arg1.day} >=
- vector<int>{arg2.year, arg2.month, arg2.day};
- }
- ostream &operator <<(ostream &ostr,const Date &dt){
- ostr << dt.sdate;
- return ostr;
- }
Add Comment
Please, Sign In to add comment