/** * icaltime_compare_date: * @date1: * @date2: * * Compare date parts of {@link icaltimetype} objects. Return negative value, 0 or positive value * accordingly if date1 is before, same day of after date2. * As a bonus it returns the amount of days passed between two days on the same year. * * Returns: negative, 0 or positive **/ gint icaltime_compare_date (const icaltimetype *date1, const icaltimetype *date2) { if (date2 == NULL) return 0; if (date1->year < date2->year) return -1; else if (date1->year > date2->year) return 1; else return time_day_of_year (date1->day, date1->month - 1, date1->year) - time_day_of_year (date2->day, date2->month - 1, date2->year); }
/** * time_day_of_week: * @day: The day. * @month: The month. * @year: The year. * * Returns the day of the week for the specified date, 0 (Sun) to 6 (Sat). * For the days that were removed on the Gregorian reformation, it returns * Thursday. Year is the normal year, e.g. 2001. Month is 0 to 11. * * Return value: the day of the week for the given date. */ int time_day_of_week (int day, int month, int year) { int n; n = (year - 1) * 365 + time_leap_years_up_to (year - 1) + time_day_of_year (day, month, year); if (n < REFORMATION_DAY) return (n - 1 + SATURDAY) % 7; if (n >= (REFORMATION_DAY + MISSING_DAYS)) return (n - 1 + SATURDAY - MISSING_DAYS) % 7; return THURSDAY; }