public void get_next_and_last_tuesday() { var a_saturday = new DateTime(2011, 8, 20); var nextTuesday = a_saturday.NextDayOfWeek(DayOfWeek.Tuesday); var lastTuesday = a_saturday.LastDayOfWeek(DayOfWeek.Tuesday); Assert.IsTrue((nextTuesday.DayOfWeek == DayOfWeek.Tuesday) && (nextTuesday == new DateTime(2011, 8, 23))); Assert.IsTrue((lastTuesday.DayOfWeek == DayOfWeek.Tuesday) && (lastTuesday == new DateTime(2011, 8, 16))); }
public void LastDayOfWeek() { // Type var @this = new DateTime(2014, 01, 24); // Exemples DateTime result = @this.LastDayOfWeek(); // return "2014/01/25"; // Unit Test Assert.AreEqual(new DateTime(2014, 01, 25), result.Date); }
public void LastDayOfWeekTestCase() { var dateTime = new DateTime( 2014, 3, 30 ); var actual = dateTime.LastDayOfWeek(); Assert.AreEqual( dateTime, actual ); dateTime = new DateTime( 2014, 3, 28 ); actual = dateTime.LastDayOfWeek(); Assert.AreEqual( new DateTime( 2014, 3, 30 ), actual ); }
/// <summary> /// Subtracts the given calendar day and returns one or more new calendar entities representing the same data. /// </summary> public static IEnumerable<Calendar> Subtract(this Calendar calendar, DateTime day) { if (!calendar.CoversDate(day)) { // no work needs to be done. return new Calendar[] { calendar }; } var firstDayOfWeek = day.FirstDayOfWeek(); var lastDayOfWeek = day.LastDayOfWeek(); if(firstDayOfWeek <= calendar.StartDate && lastDayOfWeek >= calendar.EndDate) { // yay! this is exceptional but let's take advantage of this. calendar[day.DayOfWeek] = false; return new Calendar[] { calendar }; } // possibly split in two or three pieces. if(firstDayOfWeek <= calendar.StartDate) { // two pieces, a first week with the day substracted and the rest. var subtracted = new Calendar() { StartDate = calendar.StartDate, EndDate = lastDayOfWeek }; subtracted.CopyWeekPatternFrom(calendar); subtracted[day.DayOfWeek] = false; var rest = new Calendar() { StartDate = lastDayOfWeek.AddDays(1), EndDate = calendar.EndDate }; rest.CopyWeekPatternFrom(calendar); return new Calendar[] { subtracted, rest }; } else if (lastDayOfWeek >= calendar.EndDate) { // two pieces, a last week with the day substracted and the rest. var rest = new Calendar() { StartDate = calendar.StartDate, EndDate = firstDayOfWeek.AddDays(-1) }; rest.CopyWeekPatternFrom(calendar); var subtracted = new Calendar() { StartDate = firstDayOfWeek, EndDate = calendar.EndDate }; subtracted.CopyWeekPatternFrom(calendar); subtracted[day.DayOfWeek] = false; return new Calendar[] { rest, subtracted }; } else { // three pieces, a first period, a week with the day subtracted and a last period. var rest1 = new Calendar() { StartDate = calendar.StartDate, EndDate = firstDayOfWeek.AddDays(-1) }; rest1.CopyWeekPatternFrom(calendar); var subtracted = new Calendar() { StartDate = firstDayOfWeek, EndDate = lastDayOfWeek }; subtracted.CopyWeekPatternFrom(calendar); subtracted[day.DayOfWeek] = false; var rest2 = new Calendar() { StartDate = lastDayOfWeek.AddDays(1), EndDate = calendar.EndDate }; rest2.CopyWeekPatternFrom(calendar); return new Calendar[] { rest1, subtracted, rest2 }; } }