实现控制台打印当年日历
1. 在控制台中实现年历的方法
主级目标----12次循环打印每月月历
2. 打印每月月历
次级先打印表头
需要知道每月一日是周几然后打印空格,使用c#内部类datetime搞
次级打印日期
需要知道每个月有多少天,1-31,逢7打印回车,用datetime获取每月天数然后写一个计数器,每月从零开始每打印一天就加1,逢7打印一次回车
使用datetime获取每个月的日期时会考虑是否闰年,不要反复造车轮
输出结果
整体代码
/*编写日期2021/8/16
**开发者:市井道士
**为方便同样在此学习的各位同学,在此放出自己的答案供大家参考学习,仅供参考,随意转载,转载请标注原作者*/
using System;
namespace d03
{
class Program
{
static void Main(string[] args)
{
Calendar calendar = new Calendar();
calendar.Printdate(DateTime.Now.Year);
Console.WriteLine("编写日期2021/8/16");
Console.WriteLine("开发者:市井道士");
Console.WriteLine("为方便同样在此学习的各位同学,在此放出自己的答案供大家参考学习,仅供参考,随意转载");
Console.ReadLine();
}
}
class Calendar
{
/// <summary>
/// 输入年月日,得到这天是星期几
/// </summary>
/// <param name="year">年</param>
/// <param name="month">月</param>
/// <param name="day">日</param>
/// <returns>星期几</returns>
private static int GetWeekByDay(int year, int month, int day)
{
DateTime dt = new DateTime(year, month, day);
return (int)dt.DayOfWeek;
}
/// <summary>
/// 获取某个月的天数,输入(int)年份,月份,返回天数(int)
/// </summary>
/// <param name="year">年</param>
/// <param name="month">月</param>
/// <returns>天数</returns>
private static int GetMonthDay(int year, int month)
{
int thismonthdays = DateTime.DaysInMonth(year, month);
return thismonthdays;
}
/// <summary>
/// 打印年历
/// </summary>
/// <param name="year"></param>
public void Printdate(int year)
{
int nextlinecount;//使用一个计数器没过一天就加1,逢7换行
for (int month = 1; month <= 12; month++)
{
nextlinecount = 0;//计数器每个月开始需要进行初始化
Console.WriteLine("{0}年{1}月",year, month);
Console.WriteLine("星期天\t 星期一\t 星期二\t 星期三\t 星期四\t 星期五\t 星期六\t");
//获取每个月第一天是星期几然后输出对应次数的空格
for (int count=1;count <= GetWeekByDay(year,month,1);count++ ){
Console.Write(" \t ");
nextlinecount++;//计数器增加,这里的空的是上个月的日子
}
for (int day = 1; day <= GetMonthDay(year, month); day++)
{
if (nextlinecount % 7 == 0)//每次打印日期前先判断是否为周六,逢7换行
Console.WriteLine();
Console.Write(day+"\t ");
nextlinecount++;
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("=========================================================================");
Console.WriteLine();
}
}
}
}