C#实现控制台打印当年日历

实现控制台打印当年日历

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();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值