C# 通过各个函数实现控制台日历
标签: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
评论