Example #1
0
int whenDate(Date d1, Date d2)
{
    if (validMonth(d1) == -1 || validDay(d1) == -1 || validYear(d1) == -1)
        return -2; //returns -2 if one of the dates are invalid

    if (validMonth(d2) == -1 || validDay(d2) == -1 || validYear(d2) == -1)
        return -2;

    if (d1.year > d2.year)
        return 1;
    else if (d1.year < d2.year)
        return -1;
    else if (d1.year == d2.year)
    {
        if (d1.month > d2.month)
            return 1;
        else if (d1.month < d2.month)
            return -1;
        else if (d1.month == d2.month)
        {
            if (d1.day > d2.day)
                return 1;
            else if (d1.day < d2.day)
                return -1;
            else if (d1.day == d2.day)
                return 0;
        }
    }
}
Example #2
0
Date::Date(int y, int m, int d)
{
	year = Year(((y > 0) ? y : 1));
	month = Month(m >= 1 && m <= 12 ? m : 1);
	month.setNumberOfDays(getDaysOfMonth(year.getYear(), month.getMonth()));
	day = Day(validDay(year.getYear(), month.getMonth(), d) ? d : 1);
}
Example #3
0
Date & Date::operator+=(long days)
{
	if (days < 0)
		return (*this -= -days);

	int currYear = year.getYear();
	int currMonth = month.getMonth();
	int currDay = day.getDay();
	int offset = 0;

	while (!validDay(currYear, currMonth, days))
	{
		offset = getDaysOfMonth(currYear, currMonth);
		days -= offset;
		if (++currMonth > 12)
		{
			currMonth = 1;
			currYear++;
		}
	}
	currDay += days;
	if (!validDay(currYear, currMonth, currDay))
	{
		offset = getDaysOfMonth(currYear, currMonth);
		currDay -= offset;
		if (++currMonth > 12)
		{
			currMonth = 1;
			currYear++;
		}
	}

	if (currYear < 1)
		currYear = currMonth = currDay = 1;

	year.setYear(currYear);
	month.setMonth(currMonth);
	month.setNumberOfDays(getDaysOfMonth(currYear, currMonth));
	day.setDay(currDay);

	return *this;
}
Example #4
0
Date & Date::operator-=(long days)
{
	if (days < 0)
		return (*this += -days);

	int currYear = year.getYear();
	int currMonth = month.getMonth();
	int currDay = day.getDay();
	int offset = 0;

	while (!validDay(currYear, currMonth, days))
	{
		if (--currMonth < 1)
		{
			currMonth = 12;
			currYear--;
		}
		offset = getDaysOfMonth(currYear, currMonth);
		days -= offset;
		
	}
	currDay -= days;
	if (currDay < 1)
	{
		if (--currMonth < 1)
		{
			currMonth = 12;
			currYear--;
		}
		offset = getDaysOfMonth(currYear, currMonth);
		currDay += offset;
	}

	if (currYear < 1)
		currYear = currMonth = currDay = 1;

	year.setYear(currYear);
	month.setMonth(currMonth);
	month.setNumberOfDays(getDaysOfMonth(currYear, currMonth));
	day.setDay(currDay);

	return *this;
}
Example #5
0
void Date::setDay(int d) { if (validDay(year.getYear(), month.getMonth(), d)) day.setDay(d); }