C# 通过各个函数实现控制台日历

2021-04-03 18:26

阅读:569

标签:readline   eric   div   第几天   []   ring   col   str   space   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleCalendar
{
    class Program
    {
        /// 
        /// 判断指定年份是不是闰年
        /// 
        /// 接收的年份
        /// 是闰年时,返回true
        static bool IsLeap(int year)
        {
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                return true;
            return false;
        }
        /// 
        /// 得到某年某月的天数
        /// 
        /// 接收的年份
        /// 接收的月份
        /// 返回天数
        static int GetDaysOfMonth(int year, int month)
        {
            if (month == 2)
            {
                if (IsLeap(year))
                    return 29;
                return 28;
            }
            else if (month 7 && month % 2 != 0 || month > 7 && month % 2 == 0)
                return 31;
            return 30;
        }
        /// 
        /// 计算某一年总共的天数
        /// 
        /// 接收的年份
        /// 返回天数
        static int GetDaysOfYear(int year)
        {
            if (IsLeap(year))
                return 366;
            return 365;
        }
        /// 
        /// 根据提供的年月日,计算是这一年的第几天
        /// 
        /// 接收的年份
        /// 接收的月份
        /// 第几天
        /// 返回是这一年的第几天
        static int GetDaysInYear(int year, int month, int day)
        {
            int inAllDays = 0;
            for (int i = 1; i 1; i++)
                inAllDays += GetDaysOfMonth(year,i);
            return inAllDays + day;
        }
        /// 
        /// 根据提供的年月日,计算从1900年1月1号,到这一天经过的总天数
        /// 
        /// 
        /// 
        /// 
        /// 返回总天数
        static int GetCrossDaysFrom1900(int year, int month, int day)
        {
            int allYearDays = 0;
            for (int i = 1900; i 1; i++)
                allYearDays += GetDaysOfYear(i);
            return allYearDays + GetDaysInYear(year, month, day)-1;
        }
        /// 
        /// 计算某年某月某日是星期几
        /// 
        /// 
        /// 
        /// 
        /// 
        static int GetDayOfWeek(int year, int month, int day)
        {
            int daysFrom1900=GetCrossDaysFrom1900(year, month, day);
            int week = daysFrom1900 % 7 + 1;
            return week;
        }
        /// 
        /// 得到用户输入的年份
        /// 
        /// 返回输入的年份
        static int GetUserInputYear()
        {
            Console.Write("请输入一个年份:");
            while (true)
            {
                int year = int.Parse(Console.ReadLine());
                if (year 1900 || year > 2100)
                    Console.Write("输入有误,请重新输入:");
                else
                    return year;
            }
        }
        /// 
        /// 得到用户输入的月份
        /// 
        /// 返回输入的月份
        static int GetUserInputMonth()
        {
            Console.Write("请输入一个月份:");
            while (true)
            {
                int month = int.Parse(Console.ReadLine());
                if (month 1 || month > 12)
                    Console.Write("输入有误,请重新输入:");
                else
                    return month;
            }
        }
        /// 
        /// 打印日历
        /// 
        /// 
        /// 
        static void PrintCalendar(int year,int month)
        {
            Liststring> calendar = new Liststring>();
            int daysFrom1900 = GetCrossDaysFrom1900(year, month, 1);
            int space = daysFrom1900 % 7;
            for (int i = 0; i )
                calendar.Add("");
            for (int i = 1; i )
                calendar.Add(i.ToString());
            Console.WriteLine("**************************************************");
            Console.WriteLine("一\t二\t三\t四\t五\t六\t日");
            for (int i = 0; i )
            {
                if (i % 7 == 0 && i != 0)
                    Console.WriteLine();
                Console.Write(calendar[i]+"\t");
            }
            Console.WriteLine();
            Console.WriteLine("**************************************************");           
        }

        static void Main(string[] args)
        {
            PrintCalendar(GetUserInputYear(), GetUserInputMonth());
            Console.ReadLine();
        }
    }
}

 

C# 通过各个函数实现控制台日历

标签:readline   eric   div   第几天   []   ring   col   str   space   

原文地址:https://www.cnblogs.com/lithree/p/9195500.html


评论


亲,登录后才可以留言!