private static void PrintWholeYear(MyMonth curr, DayOfWeek start, int dayWidth) { string header = curr.Date.Year.ToString(); Console.Write(BuildHeader(header, ((dayWidth + 1) * 21) + 6)); Console.WriteLine(); for (int i = 0; i < 4; i++) { MyMonth first = new MyMonth(new DateTime(curr.Date.Year, (i * 3) + 1, 1)); if (first.Date.Month != curr.Date.Month) { first.HighlightDay = false; } MyMonth middle = new MyMonth(new DateTime(curr.Date.Year, (i * 3) + 2, 1)); if (middle.Date.Month != curr.Date.Month) { middle.HighlightDay = false; } MyMonth last = new MyMonth(new DateTime(curr.Date.Year, (i * 3) + 3, 1)); if (last.Date.Month != curr.Date.Month) { last.HighlightDay = false; } int width = (dayWidth + 1) * 7; header = first.Date.ToString("MMMM"); Console.Write(BuildHeader(header, width)); PrintPadding(); header = middle.Date.ToString("MMMM"); Console.Write(BuildHeader(header, width)); PrintPadding(); header = last.Date.ToString("MMMM"); Console.Write(BuildHeader(header, width)); PrintPadding(); Console.WriteLine(); DateTime firstEnd = first.Date.AddMonths(1); DateTime middleEnd = middle.Date.AddMonths(1); DateTime lastEnd = last.Date.AddMonths(1); while ((first.PrintDate < firstEnd) || (middle.PrintDate < middleEnd) || (last.PrintDate < lastEnd)) { first.PrintNextWeek(start, dayWidth); PrintPadding(); middle.PrintNextWeek(start, dayWidth); PrintPadding(); last.PrintNextWeek(start, dayWidth); PrintPadding(); Console.WriteLine(); } } }
private static void PrintThreeMonths(MyMonth curr, DayOfWeek start, int dayWidth, bool printYear) { MyMonth prev = new MyMonth(curr.Date.AddMonths(-1)); prev.HighlightDay = false; MyMonth next = new MyMonth(curr.Date.AddMonths(1)); next.HighlightDay = false; int width = (dayWidth + 1) * 7; string header = String.Empty; string format = "MMMM"; if (printYear == true) { format = format + " yyyy"; } header = prev.Date.ToString(format); Console.Write(BuildHeader(header, width)); PrintPadding(); header = curr.Date.ToString(format); Console.Write(BuildHeader(header, width)); PrintPadding(); header = next.Date.ToString(format); Console.Write(BuildHeader(header, width)); PrintPadding(); Console.WriteLine(); PrintDaysOfWeek(start, dayWidth); PrintPadding(); PrintDaysOfWeek(start, dayWidth); PrintPadding(); PrintDaysOfWeek(start, dayWidth); Console.WriteLine(); DateTime prevEnd = new DateTime(curr.Date.Year, curr.Date.Month, 1); DateTime currEnd = new DateTime(next.Date.Year, next.Date.Month, 1); DateTime nextEnd = new DateTime(next.Date.Year, next.Date.Month + 1, 1); while ((curr.PrintDate < currEnd) || (prev.PrintDate < prevEnd) || (next.PrintDate < nextEnd)) { prev.PrintNextWeek(start, dayWidth); PrintPadding(); curr.PrintNextWeek(start, dayWidth); PrintPadding(); next.PrintNextWeek(start, dayWidth); PrintPadding(); Console.WriteLine(); } }
private static void PrintMonth(MyMonth currMonth, DayOfWeek start, int dayWidth) { string header = currMonth.Date.ToString("MMMM yyyy"); int width = (dayWidth + 1) * 7; Console.WriteLine(BuildHeader(header, width)); PrintDaysOfWeek(start, dayWidth); Console.WriteLine(); DateTime end = new DateTime(currMonth.Date.Year, currMonth.Date.Month + 1, 1); while (currMonth.PrintDate < end) { currMonth.PrintNextWeek(start, dayWidth); Console.WriteLine(); } }