/* * Copyright (C) 1995. Bill Brown & Michael Shapiro * * This program is free software under the GPL (>=v2) * Read the file GPL.TXT coming with GRASS for details. */ #include /*! * \brief * * \param year * \param ad * \return int */ int datetime_is_leap_year (int year, int ad) { if (year == 0) return datetime_error (-1, "datetime_is_leap_year(): illegal year"); if (!ad) return 0; /* BC */ if (year < 0) return 0; /* ?? */ return((year%4 == 0 && year%100 != 0) || year%400 == 0); } /*! * \brief * * returns the number of days in 'year' * * \param year * \param ad * \return int */ int datetime_days_in_year (int year, int ad) { if (year == 0) return datetime_error (-1, "datetime_days_in_year(): illegal year"); if(datetime_is_leap_year(year,ad)) return 366; else return 365; } /*! * \brief * * returns number of days in 'month' of a particular 'year' * * \param month * \param year * \param ad * \return int */ int datetime_days_in_month (int year, int month, int ad) { static int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; if (month < 1 || month > 12) return datetime_error (-1, "datetime_days_in_month(): illegal month"); if(month == 2 && datetime_is_leap_year(year,ad)) return(29); return(days[month - 1]); }