Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "date.h"
- Date::Date(int _month, int _day, int _year):year(_year),month(_month),day(_day)
- {
- setMonth(_month);
- setDay(_day);
- }
- bool Date::isLeapYear(int year)
- {
- if(year % 400 == 0)
- return true;
- if(year % 100 == 0)
- return false;
- if(year % 4 == 0)
- return true;
- return false;
- }
- int Date::getMonthLength(int month, int year)
- {
- int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- if(isLeapYear(year))
- days[1] = 29;
- return days[month - 1];
- }
- void Date::setMonth(int _month)
- {
- month = _month;
- if(month < 0 || month > 12)
- {
- std::cerr << "Invalid month: " << month << " (in date: " << *this << ")" << std::endl;
- month = 1;
- }
- // Day should be re validated when year or month is changed
- };
- void Date::setDay(int _day)
- {
- day = _day;
- if(day < 0 || day > getMonthLength(month, year))
- {
- std::cerr << "Invalid day: " << day << " (in date: " << *this << ")" << std::endl;
- day = 1;
- }
- }
- void Date::setYear(int _year)
- {
- year = _year;
- }
- void Date::print()
- {
- std::cout << month << "/" << day << "/" << year << std::endl;
- }
- int Date::getMonth() { return month; };
- int Date::getDay() { return day; };
- int Date::getYear() { return year; };
- std::ostream &operator<<(std::ostream &stream, Date &date)
- {
- stream << date.month << "/" << date.day << "/" << date.year;
- }
- int main()
- {
- Date a(13, 23, 2009);
- Date b(6, 30, 1994);
- Date c(2, 29, 2009);
- std::cout << "Date a is: ";
- a.print();
- std::cout << "Dates b - c are: ";
- std::cout << b << " - " << c << std::endl;
- std::cout << "Date c year is " << c.getYear() << std::endl;
- b.setMonth(1);
- c.setDay(27);
- std::cout << "Dates are now:" << std::endl;
- std::cout << "a: " << a << " b: " << b << " c: " << c << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement