示例#1
0
        public void ThridShift()
        {
            BusinessWeek businessWeek = new BusinessWeek();

            //day 1
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Sunday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Monday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 2
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Monday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Tuesday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 3
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Tuesday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Wednesday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 4
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Wednesday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Thursday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 5
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Thursday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Friday, TimeSpan.Zero, TimeSpan.FromHours(6)));


            var startDate = new DateTime(2010, 1, 3, 22, 0, 0);
            var endDate   = new DateTime(2010, 1, 4, 6, 0, 0);

            TimeSpan time = businessWeek.GetBusinessTime(startDate, endDate);

            Assert.Equal(8, time.TotalHours);

            startDate = new DateTime(2010, 1, 2, 0, 0, 0);
            endDate   = new DateTime(2010, 1, 9, 0, 0, 0);

            time = businessWeek.GetBusinessTime(startDate, endDate);

            Assert.Equal(40, time.TotalHours);
        }
        public void ThridShift()
        {
            BusinessWeek businessWeek = new BusinessWeek();
            //day 1
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Sunday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Monday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 2
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Monday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Tuesday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 3
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Tuesday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Wednesday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 4
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Wednesday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Thursday, TimeSpan.Zero, TimeSpan.FromHours(6)));
            //day 5
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Thursday, TimeSpan.FromHours(22), TimeSpan.FromHours(24)));
            businessWeek.BusinessDays.Add(new BusinessDay(DayOfWeek.Friday, TimeSpan.Zero, TimeSpan.FromHours(6)));


            var startDate = new DateTime(2010, 1, 3, 22, 0, 0);
            var endDate = new DateTime(2010, 1, 4, 6, 0, 0);

            TimeSpan time = businessWeek.GetBusinessTime(startDate, endDate);
            
            Assert.AreEqual(8, time.TotalHours);

            startDate = new DateTime(2010, 1, 2, 0, 0, 0);
            endDate = new DateTime(2010, 1, 9, 0, 0, 0);

            time = businessWeek.GetBusinessTime(startDate, endDate);

            Assert.AreEqual(40, time.TotalHours);

        }