Esempio n. 1
0
        } // GetStartOfWeek

        // ----------------------------------------------------------------------
        public static void GetWeekOfYear(DateTime moment, CultureInfo culture, YearWeekType yearWeekType,
                                         out int year, out int weekOfYear)
        {
            GetWeekOfYear(moment, culture, culture.DateTimeFormat.CalendarWeekRule,
                          culture.DateTimeFormat.FirstDayOfWeek, yearWeekType,
                          out year, out weekOfYear);
        } // GetWeekOfYear
Esempio n. 2
0
        } // New

        // ----------------------------------------------------------------------
        public static TimeCalendar New(CultureInfo culture, YearMonth yearBaseMonth, YearWeekType yearWeekType)
        {
            return(new TimeCalendar(new TimeCalendarConfig {
                Culture = culture,
                YearBaseMonth = yearBaseMonth,
                YearWeekType = yearWeekType
            }));
        } // New
Esempio n. 3
0
        } // GetWeeksOfYear

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfYearWeek(int year, int weekOfYear, CultureInfo culture,
                                                  YearWeekType yearWeekType)
        {
            if (culture == null)
            {
                throw new ArgumentNullException("culture");
            }
            return(GetStartOfYearWeek(year, weekOfYear, culture,
                                      culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, yearWeekType));
        } // GetStartOfYearWeek
Esempio n. 4
0
        }         // QueryWeek

        // ----------------------------------------------------------------------
        public bool QueryYearWeekType()
        {
            int?weekType = ConsoleTool.QueryNumber("Week type (0..1) [enter=" + (int)YearWeekType + "/" + YearWeekType + "]: ",
                                                   (int)YearWeekType, 0, 2);

            if (!weekType.HasValue)
            {
                return(false);
            }
            YearWeekType = (YearWeekType)weekType.Value;
            return(true);
        }         // QueryYearWeekType
Esempio n. 5
0
        // ----------------------------------------------------------------------
        public TimeCalendar( TimeCalendarConfig config )
        {
            if ( config.StartOffset < TimeSpan.Zero )
            {
                throw new ArgumentOutOfRangeException( "config" );
            }
            if ( config.EndOffset > TimeSpan.Zero )
            {
                throw new ArgumentOutOfRangeException( "config" );
            }

            culture = config.Culture ?? Thread.CurrentThread.CurrentCulture;
            yearType = config.YearType.HasValue ? config.YearType.Value : YearType.SystemYear;
            startOffset = config.StartOffset.HasValue ? config.StartOffset.Value : DefaultStartOffset;
            endOffset = config.EndOffset.HasValue ? config.EndOffset.Value : DefaultEndOffset;
            yearBaseMonth = config.YearBaseMonth.HasValue ? config.YearBaseMonth.Value : TimeSpec.CalendarYearStartMonth;
            yearWeekType = config.YearWeekType.HasValue ? config.YearWeekType.Value : YearWeekType.Calendar;
            dayNameType = config.DayNameType.HasValue ? config.DayNameType.Value : CalendarNameType.Full;
            monthNameType = config.MonthNameType.HasValue ? config.MonthNameType.Value : CalendarNameType.Full;
        }
Esempio n. 6
0
 // ----------------------------------------------------------------------
 public static TimeCalendar New( CultureInfo culture, YearMonth yearBaseMonth, YearWeekType yearWeekType )
 {
     return new TimeCalendar( new TimeCalendarConfig
     {
         Culture = culture,
         YearBaseMonth = yearBaseMonth,
         YearWeekType = yearWeekType
     } );
 }
Esempio n. 7
0
        }         // GetStartOfYearWeek

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfYearWeek(int year, int weekOfYear, CultureInfo culture,
                                                  CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType)
        {
            if (culture == null)
            {
                throw new ArgumentNullException("culture");
            }
            if (weekOfYear < 1)
            {
                throw new ArgumentOutOfRangeException("weekOfYear");
            }

            DateTime dateTime = new DateTime(year, 1, 1).AddDays(weekOfYear * TimeSpec.DaysPerWeek);
            int      currentYear;
            int      currentWeek;

            GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek);

            // get last week day of the week
            DayOfWeek lastDayOfWeek = (DayOfWeek)(((int)firstDayOfWeek + TimeSpec.DaysPerWeek - 1) % TimeSpec.DaysPerWeek);

            // end date of week
            while (currentWeek != weekOfYear)
            {
                dateTime = dateTime.AddDays(-1);
                GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek);
            }

            // end of previous week => keep on going until got last week day
            while (currentWeek == weekOfYear || dateTime.DayOfWeek != lastDayOfWeek)
            {
                dateTime = dateTime.AddDays(-1);
                GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek);
            }

            return(dateTime.AddDays(1));
        }         // GetStartOfYearWeek
Esempio n. 8
0
 // ----------------------------------------------------------------------
 public bool QueryYearWeekType()
 {
     int? weekType = ConsoleTool.QueryNumber( "Week type (0..1) [enter=" + (int)YearWeekType + "/" + YearWeekType + "]: ",
         (int)YearWeekType, 0, 2 );
     if ( !weekType.HasValue )
     {
         return false;
     }
     YearWeekType = (YearWeekType)weekType.Value;
     return true;
 }
Esempio n. 9
0
        } // GetStartOfYearWeek

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfYearWeek(int year, int weekOfYear, CultureInfo culture,
                                                  CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType)
        {
            if (culture == null)
            {
                throw new ArgumentNullException("culture");
            }
            if (weekOfYear < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(weekOfYear));
            }

            DateTime dateTime = new DateTime(year, 1, 1).AddDays(weekOfYear * TimeSpec.DaysPerWeek);
            int      currentYear;
            int      currentWeek;

            GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek);


            // end date of week
            while (currentWeek != weekOfYear)
            {
                dateTime = dateTime.AddDays(-1);
                GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear,
                              out currentWeek);
            }

            // end of previous week
            while (currentWeek == weekOfYear)
            {
                dateTime = dateTime.AddDays(-1);
                GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear,
                              out currentWeek);
            }

            return(dateTime.AddDays(1));
        } // GetStartOfYearWeek
Esempio n. 10
0
        } // GetWeekOfYear

        // ----------------------------------------------------------------------
        public static int GetWeeksOfYear(int year, CultureInfo culture, YearWeekType yearWeekType)
        {
            return(GetWeeksOfYear(year, culture, culture.DateTimeFormat.CalendarWeekRule,
                                  culture.DateTimeFormat.FirstDayOfWeek, yearWeekType));
        } // GetWeeksOfYear
Esempio n. 11
0
        } // GetWeeksOfYear

        // ----------------------------------------------------------------------
        public static int GetWeeksOfYear(int year, CultureInfo culture,
                                         CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType)
        {
            if (culture == null)
            {
                throw new ArgumentNullException(nameof(culture));
            }

            int      currentYear;
            int      currentWeek;
            DateTime currentDay = new DateTime(year, 12, 31);

            GetWeekOfYear(currentDay, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek);
            while (currentYear != year)
            {
                currentDay = currentDay.AddDays(-1);
                GetWeekOfYear(currentDay, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear,
                              out currentWeek);
            }
            return(currentWeek);
        } // GetWeeksOfYear
Esempio n. 12
0
 // ----------------------------------------------------------------------
 public static bool IsSameWeek( DateTime left, DateTime right, CultureInfo culture, YearWeekType weekType )
 {
     return IsSameWeek( left, right, culture, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, weekType );
 }
Esempio n. 13
0
        } // GetWeekOfYear

        // ----------------------------------------------------------------------
        public static void GetWeekOfYear(DateTime moment, CultureInfo culture,
                                         CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType, out int year, out int weekOfYear)
        {
            if (culture == null)
            {
                throw new ArgumentNullException("culture");
            }

            if (yearWeekType == YearWeekType.Iso8601 && weekRule == CalendarWeekRule.FirstFourDayWeek && firstDayOfWeek == DayOfWeek.Monday)
            {
                DayOfWeek day = culture.Calendar.GetDayOfWeek(moment);
                if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
                {
                    moment = moment.AddDays(3);
                }
            }

            weekOfYear = culture.Calendar.GetWeekOfYear(moment, weekRule, firstDayOfWeek);
            year       = moment.Year;
            if (weekOfYear >= 52 && moment.Month < 12)
            {
                year--;
            }
        } // GetWeekOfYear
Esempio n. 14
0
        // ----------------------------------------------------------------------
        public static int GetWeeksOfYear( int year, CultureInfo culture,
            CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType)
        {
            if ( culture == null )
            {
                throw new ArgumentNullException( "culture" );
            }

            int currentYear;
            int currentWeek;
            DateTime currentDay = new DateTime( year, 12, 31 );
            GetWeekOfYear( currentDay, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );
            while ( currentYear != year )
            {
                currentDay = currentDay.AddDays( -1 );
                GetWeekOfYear( currentDay, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );
            }
            return currentWeek;
        }
Esempio n. 15
0
        } // IsSameMonth

        #endregion

        #region Week

        // ----------------------------------------------------------------------
        public static bool IsSameWeek(DateTime left, DateTime right, CultureInfo culture, YearWeekType weekType)
        {
            return(IsSameWeek(left, right, culture, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, weekType));
        } // IsSameWeek
Esempio n. 16
0
 // ----------------------------------------------------------------------
 public static int GetWeeksOfYear( int year, CultureInfo culture, YearWeekType yearWeekType )
 {
     return GetWeeksOfYear( year, culture, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, yearWeekType );
 }
Esempio n. 17
0
        // ----------------------------------------------------------------------
        public static void GetWeekOfYear( DateTime moment, CultureInfo culture,
            CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType, out int year, out int weekOfYear)
        {
            if ( culture == null )
            {
                throw new ArgumentNullException( "culture" );
            }

            if ( yearWeekType == YearWeekType.Iso8601 && weekRule == CalendarWeekRule.FirstFourDayWeek && firstDayOfWeek == DayOfWeek.Monday )
            {
                // see http://blogs.msdn.com/b/shawnste/archive/2006/01/24/517178.aspx
                DayOfWeek day = culture.Calendar.GetDayOfWeek( moment );
                if ( day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday )
                {
                    moment = moment.AddDays( 3 );
                }
            }

            weekOfYear = culture.Calendar.GetWeekOfYear( moment, weekRule, firstDayOfWeek );
            year = moment.Year;
            if ( weekOfYear >= 52 && moment.Month < 12 )
            {
                year--;
            }
        }
Esempio n. 18
0
 // ----------------------------------------------------------------------
 public static void GetWeekOfYear( DateTime moment, CultureInfo culture, YearWeekType yearWeekType,
     out int year, out int weekOfYear)
 {
     GetWeekOfYear( moment, culture, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, yearWeekType,
         out year, out weekOfYear );
 }
Esempio n. 19
0
        // ----------------------------------------------------------------------
        public static DateTime GetStartOfYearWeek( int year, int weekOfYear, CultureInfo culture,
            CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType)
        {
            if ( culture == null )
            {
                throw new ArgumentNullException( "culture" );
            }
            if ( weekOfYear < 1 )
            {
                throw new ArgumentOutOfRangeException( "weekOfYear" );
            }

            DateTime dateTime = new DateTime( year, 1, 1 ).AddDays( weekOfYear * TimeSpec.DaysPerWeek );
            int currentYear;
            int currentWeek;
            GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );

            // end date of week
            while ( currentWeek != weekOfYear )
            {
                dateTime = dateTime.AddDays( -1 );
                GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );
            }

            // end of previous week
            while ( currentWeek == weekOfYear )
            {
                dateTime = dateTime.AddDays( -1 );
                GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );
            }

            return dateTime.AddDays( 1 );
        }
Esempio n. 20
0
 // ----------------------------------------------------------------------
 public static DateTime GetStartOfYearWeek( int year, int weekOfYear, CultureInfo culture, YearWeekType yearWeekType )
 {
     if ( culture == null )
     {
         throw new ArgumentNullException( "culture" );
     }
     return GetStartOfYearWeek( year, weekOfYear, culture,
         culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek, yearWeekType );
 }
Esempio n. 21
0
        } // IsSameWeek

        // ----------------------------------------------------------------------
        public static bool IsSameWeek(DateTime left, DateTime right, CultureInfo culture,
                                      CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType weekType)
        {
            if (culture == null)
            {
                throw new ArgumentNullException("culture");
            }

            // left
            int leftWeekOfYear;
            int leftYear;

            TimeTool.GetWeekOfYear(left, culture, weekRule, firstDayOfWeek, weekType, out leftYear, out leftWeekOfYear);

            // rught
            int rightWeekOfYear;
            int rightYear;

            TimeTool.GetWeekOfYear(right, culture, weekRule, firstDayOfWeek, weekType, out rightYear, out rightWeekOfYear);

            return(leftYear == rightYear && leftWeekOfYear == rightWeekOfYear);
        } // IsSameWeek
Esempio n. 22
0
        } // GetWeekOfYear

        // ----------------------------------------------------------------------
        public static void GetWeekOfYear(DateTime moment, CultureInfo culture,
                                         CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType yearWeekType, out int year,
                                         out int weekOfYear)
        {
            if (culture == null)
            {
                throw new ArgumentNullException(nameof(culture));
            }

            if (yearWeekType == YearWeekType.Iso8601 && weekRule == CalendarWeekRule.FirstFourDayWeek)
            {
                // see http://blogs.msdn.com/b/shawnste/archive/2006/01/24/517178.aspx
                DayOfWeek day = culture.Calendar.GetDayOfWeek(moment);
                if (day >= firstDayOfWeek && (int)day <= (int)(firstDayOfWeek + 2) % 7)
                {
                    moment = moment.AddDays(3);
                }
            }

            weekOfYear = culture.Calendar.GetWeekOfYear(moment, weekRule, firstDayOfWeek);
            year       = moment.Year;
            if (weekOfYear >= 52 && moment.Month < 12)
            {
                year--;
            }
        } // GetWeekOfYear
Esempio n. 23
0
        // ----------------------------------------------------------------------
        public static bool IsSameWeek( DateTime left, DateTime right, CultureInfo culture, 
			CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, YearWeekType weekType )
        {
            if ( culture == null )
            {
                throw new ArgumentNullException( "culture" );
            }

            // left
            int leftWeekOfYear;
            int leftYear;
            TimeTool.GetWeekOfYear( left, culture, weekRule, firstDayOfWeek, weekType, out leftYear, out leftWeekOfYear );

            // rught
            int rightWeekOfYear;
            int rightYear;
            TimeTool.GetWeekOfYear( right, culture, weekRule, firstDayOfWeek, weekType, out rightYear, out rightWeekOfYear );

            return leftYear == rightYear && leftWeekOfYear == rightWeekOfYear;
        }
Esempio n. 24
0
 // ----------------------------------------------------------------------
 public static void GetWeekOfYear(DateTime moment, YearWeekType yearWeekType,
                                  out int year, out int weekOfYear)
 {
     GetWeekOfYear(moment, System.Threading.Thread.CurrentThread.CurrentCulture, yearWeekType, out year, out weekOfYear);
 } // GetWeekOfYear