System.CurrentSystemTimeZone.GetDayOfWeek C# (CSharp) Method

GetDayOfWeek() private static method

private static GetDayOfWeek ( int year, int month, int targetDayOfWeek, int numberOfSunday, int hour, int minute, int second, int millisecond ) : System.DateTime
year int
month int
targetDayOfWeek int
numberOfSunday int
hour int
minute int
second int
millisecond int
return System.DateTime
        private static DateTime GetDayOfWeek(int year, int month, int targetDayOfWeek, int numberOfSunday, int hour, int minute, int second, int millisecond) {
            DateTime time;
            
            if (numberOfSunday <= 4) {
                //
                // Get the (numberOfSunday)th Sunday.
                //
                
                time = new DateTime(year, month, 1, hour, minute, second, millisecond, DateTimeKind.Local);
    
                int dayOfWeek = (int)time.DayOfWeek;
                int delta = targetDayOfWeek - dayOfWeek;
                if (delta < 0) {
                    delta += 7;
                }
                delta += 7 * (numberOfSunday - 1);
    
                if (delta > 0) {
                    time = time.AddDays(delta);
                }
            } else {
                //
                // If numberOfSunday is greater than 4, we will get the last sunday.
                //
                Calendar cal = GregorianCalendar.GetDefaultInstance();            
                time = new DateTime(year, month, cal.GetDaysInMonth(year, month), hour, minute, second, millisecond, DateTimeKind.Local);
                // This is the day of week for the last day of the month.
                int dayOfWeek = (int)time.DayOfWeek;
                int delta = dayOfWeek - targetDayOfWeek;
                if (delta < 0) {
                    delta += 7;
                }
                
                if (delta > 0) {
                    time = time.AddDays(-delta);
                }
            }
            return (time);
        }

Usage Example

Beispiel #1
0
        public override DaylightTime GetDaylightChanges(int year)
        {
            if (year < 1 || year > 9999)
            {
                throw new ArgumentOutOfRangeException("year", Environment.GetResourceString("ArgumentOutOfRange_Range", (object)1, (object)9999));
            }
            object key = (object)year;

            if (!this.m_CachedDaylightChanges.Contains(key))
            {
                lock (CurrentSystemTimeZone.InternalSyncObject)
                {
                    if (!this.m_CachedDaylightChanges.Contains(key))
                    {
                        short[] local_3 = CurrentSystemTimeZone.nativeGetDaylightChanges(year);
                        if (local_3 == null)
                        {
                            this.m_CachedDaylightChanges.Add(key, (object)new DaylightTime(DateTime.MinValue, DateTime.MinValue, TimeSpan.Zero));
                        }
                        else
                        {
                            DateTime     temp_65  = CurrentSystemTimeZone.GetDayOfWeek(year, (uint)local_3[0] > 0U, (int)local_3[1], (int)local_3[2], (int)local_3[3], (int)local_3[4], (int)local_3[5], (int)local_3[6], (int)local_3[7]);
                            DateTime     local_4  = CurrentSystemTimeZone.GetDayOfWeek(year, (uint)local_3[8] > 0U, (int)local_3[9], (int)local_3[10], (int)local_3[11], (int)local_3[12], (int)local_3[13], (int)local_3[14], (int)local_3[15]);
                            TimeSpan     local_5  = new TimeSpan((long)local_3[16] * 600000000L);
                            DateTime     temp_102 = local_4;
                            TimeSpan     temp_103 = local_5;
                            DaylightTime local_6  = new DaylightTime(temp_65, temp_102, temp_103);
                            this.m_CachedDaylightChanges.Add(key, (object)local_6);
                        }
                    }
                }
            }
            return((DaylightTime)this.m_CachedDaylightChanges[key]);
        }
All Usage Examples Of System.CurrentSystemTimeZone::GetDayOfWeek