Files
CMLeonOS/shell/Commands/Utility/CalendarCommand.cs

86 lines
2.9 KiB
C#
Raw Normal View History

2026-03-08 20:22:53 +08:00
// The CMLeonOS Project (https://github.com/Leonmmcoset/CMLeonOS)
// Copyright (C) 2025-present LeonOS 2 Developer Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
2026-02-04 21:37:05 +08:00
using System;
namespace CMLeonOS.Commands.Utility
{
public static class CalendarCommand
{
public static void ShowCalendar(string args)
{
int year = DateTime.Now.Year;
int month = DateTime.Now.Month;
if (!string.IsNullOrEmpty(args))
{
string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length >= 1)
{
if (int.TryParse(parts[0], out int m) && m >= 1 && m <= 12)
{
month = m;
}
}
if (parts.Length >= 2)
{
if (int.TryParse(parts[1], out int y) && y >= 1 && y <= 9999)
{
year = y;
}
}
}
DateTime firstDay = new DateTime(year, month, 1);
int daysInMonth = DateTime.DaysInMonth(year, month);
DayOfWeek startDayOfWeek = firstDay.DayOfWeek;
string[] monthNames = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
};
Console.WriteLine($" {monthNames[month - 1]} {year}");
Console.WriteLine(" Su Mo Tu We Th Fr Sa");
int dayOfWeek = (int)startDayOfWeek;
if (dayOfWeek == 0) dayOfWeek = 7;
for (int i = 1; i < dayOfWeek; i++)
{
Console.Write(" ");
}
for (int day = 1; day <= daysInMonth; day++)
{
Console.Write($"{day,2} ");
dayOfWeek++;
if (dayOfWeek > 7)
{
dayOfWeek = 1;
Console.WriteLine();
Console.Write(" ");
}
}
Console.WriteLine();
}
}
}