Перегрузка оператора сложения в собственном классе Date
У меня есть класс, который мне пришлось создать для дальнейшей работы с лабораторной. Сразу предупреждаю, я знаю о DateTime, просто работа в таком формате необходима.
class Date
{
private int _year;
private int? _month;
private int? _day;
public int Year { get { return _year; } }
public int Month
{
get
{
if (_month.HasValue == false)
return 1;
return _month.Value;
}
}
public int Day
{
get
{
if (_day.HasValue == false)
return 1;
return _day.Value;
}
}
private DateTime _date;
public DateTime DateTime { get { return _date; } }
public Date(int year, int? month = null, int? day = null)
{
_year = year;
if (!CorrectYear(year))
throw new Exception("Неверный формат ввода даты года");
_month = month;
if (month != null && !CorrectMonth(month))
throw new Exception("Неверный формат ввода даты месяца");
_day = day;
if (day != null && !CorrectDay(day))
throw new Exception("Неверный формат ввода даты дня");
_date = new DateTime(Year, Month, Day);
}
public override string ToString()
{
return _date.ToString();
}
public string ToString(string format)
{
return _date.ToString(format);
}
В нем также есть проверка на високосность и проверка корректности ввода даты, но убрал, чтобы не загромождать здесь вопрос.
Теперь мне нужно чтобы я мог складывать, вычитать, сравнивать и искать min и max значения среди переменных, значений моего класса. Прошу помощи в написании "сложения", то есть перегрузки оператора +, прикрепляю код моей попытки, но она неудачна как минимум в том, что нужно учитывать что месяцев 12, также как и дней не больше 31, а у меня может быть при сложнее гораздо больше, что того, что того, поэтому я оказался в тупике и прошу помощи.
Этот нерабочий метод сложения:
public static Date operator +(Date firstDate, Date secondDate)
{
int year = firstDate._year + secondDate._year;
int? month = firstDate._month + secondDate._month;
int? day = firstDate._day + secondDate._day;
Date date = new Date(year, month, day);
return date;
}