weekdayInMonth() public static method

public static weekdayInMonth ( int year, int mon, int weekday, int pos ) : int
year int
mon int
weekday int
pos int
return int
Example #1
0
        /// <summary>
        /// Compare on day.
        ///     'd'  5        the fifth of the month
        ///     'l'  lastSun  the last Sunday in the month
        ///     'l'  lastMon  the last Monday in the month
        ///     '>'  Sun>=8   first Sunday on or after the eighth
        ///     '<'  Sun<=25  last Sunday on or before the 25th (not used)
        /// </summary>
        static int compareOnDay(Rule rule, DstTime x, int year, int mon, int day)
        {
            // universal atTime might push us into the previous day
            if (x.atMode == 'u' && rule.offset + x.atTime < 0)
            {
                ++day;
            }

            switch (x.onMode)
            {
            case (byte)'d':
                if (x.onDay < day)
                {
                    return(-1);
                }
                if (x.onDay > day)
                {
                    return(+1);
                }
                return(0);

            case (byte)'l':
                int last = DateTime.weekdayInMonth(year, mon, x.onWeekday, -1);
                if (last < day)
                {
                    return(-1);
                }
                if (last > day)
                {
                    return(+1);
                }
                return(0);

            case (byte)'>':
                int start = DateTime.weekdayInMonth(year, mon, x.onWeekday, 1);
                while (start < x.onDay)
                {
                    start += 7;
                }
                if (start < day)
                {
                    return(-1);
                }
                if (start > day)
                {
                    return(+1);
                }
                return(0);

            default:
                throw new Exception("" + (char)x.onMode);
            }
        }