Изменить код вывода календаря - C#
Формулировка задачи:
Доброго времени суток, у Меня есть код, который выводит календарь на указанный год.
Мне нужно, чтобы Я вводил год и месяц, и Мне выводил календарь на указанный месяц.
Спасибо.
Код прилагаю.
class Program
{
public enum Months
{
Январь = 1,
Февраль = 2,
Март = 3,
Апрель = 4,
Май = 5,
Июнь = 6,
Июль = 7,
Август = 8,
Сентябрь = 9,
Октябрь = 10,
Ноябрь = 11,
Декабрь = 12
}
static void Main(string[] args)
{
ShowYear(Convert.ToInt32(Console.ReadLine()));
Console.ReadLine();
}
public static void ShowYear(int yearnumber)
{
Calendar myCal = CultureInfo.InvariantCulture.Calendar;
DateTime myDT = new DateTime(yearnumber, 1, 1, myCal);
for (int i = 1; i < 13; i++)
{
Console.WriteLine((Months)i);
Console.WriteLine();
int month = myCal.GetMonth(myDT);
int j = Convert.ToInt32(myCal.GetDayOfWeek(myDT)) - 1;
for (int m = 0; m < j; m++) { Console.Write(" "); }
while (myCal.GetMonth(myDT) == month)
{
if (j % 7 == 0) Console.WriteLine();
string space = (myDT.Day.ToString().Length > 1) ? " " : " ";
Console.Write(myDT.Day + space);
myDT = myDT.AddDays(1);
j++;
}
Console.WriteLine();
Console.WriteLine();
}
}Решение задачи: «Изменить код вывода календаря»
textual
Листинг программы
static void PrintMonth(int year, int month)
{
var date = new DateTime(year, month, 1);
var count = (date.AddMonths(1) - date).Days;
var skip = (int)date.DayOfWeek;
Console.Write("Пн Вт Ср Чт Пт");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(" Сб Вс");
Console.Write(string.Join(String.Empty, Enumerable.Repeat<string>(" ", skip - 1)));
for (int i = 0; i < count; i++)
{
Console.ResetColor();
var d = date.AddDays(i);
if (d.DayOfWeek == DayOfWeek.Sunday || d.DayOfWeek == DayOfWeek.Saturday)
{
Console.ForegroundColor = ConsoleColor.Red;
}
Console.Write("{0,-3}", i + 1);
if (d.DayOfWeek == DayOfWeek.Sunday)
{
Console.WriteLine();
}
}
Console.WriteLine();
}