using System;
using System.Collections.Generic;
public class Program
    {
    /********************主函数************************/
       public static void Main()
          {
              /******************获取用户输入的年月**************/
              while(true)
                  {
                      int year1,month1;
                      while(true)
                         {
                            Console.Write("请输入年份(1900-2100):");
                            year1=int.Parse(Console.ReadLine());
                            if(year1<1900||year1>2100)
                               {
                                  Console.Write("年份输入错误,按回车键后重新输入");
                                  Console.ReadLine();
                                  Console.Clear();
                               }
                            else
                                {
                                   Console.Write("请输入月份(1-12):");
                                   month1=int.Parse(Console.ReadLine());
                                   if(month1<1||month1>12)
                                      {
                                         Console.Write("月份输入错误,按回车键后重新输入");
                                         Console.ReadLine();
                                         Console.Clear();
                                      }
                                   else
                                      {
                                         break;
                                      }
                                  }
                              }

/*********************************************************/
/********************获取月份数据,包括前面的空格*********/
                List<string> dats=new List<string>();//定义一个集合,用来存放月份里面的天数和要打印的空白数
                Console.WriteLine(GetCrossDaysFrom1900(year1,month1));//输出从1900年1月1号到输入年份的天数
                int dayofWeek=GetCrossDaysFrom1900(year1,month1)%7+1;
                int space=dayofWeek-1;
                for(int a=1;a<=space;a++)
                    {
                       dats.Add(" ");
                    }
                for(int b=1;b<=GetDaysOfMonth(year1,month1);b++)
                   {
                      dats.Add(b.ToString());
                   }
/*********************************************************/
/********************输出某年某月的日历*******************/
              Console.WriteLine("***********************************************");
              Console.Write("一\t二\t三\t四\t五\t六\t日");
              for(int d=0;d<dats.Count;d++)
                 {
                     if(d%7==0)//没打印7个数据就换行
                         {
                            Console.WriteLine();
                         }
                     Console.Write(dats[d]+"\t");
                 }
              Console.WriteLine();
              Console.WriteLine("*************************************************");
              Console.Write("按回车键继续");
              Console.ReadLine();
              Console.Clear();
            }
         }
/********************从1900年1月1号到输入年份的天数*********/
        static int GetCrossDaysFrom1900(int year2, int month2)
            {
                int days=0;
                for(int i=1900;i<year2;i++)//计算从1900年一月一号到输入的这年一月一号一共有多少天
                    {
                       if(i%4==0&&i%100!=0||i%400==0)
                          {
                             days+=366;
                           }
                       else
                           {
                              days+=365;
                           }
                     }
                 for(int j=1;j<month2;j++)
                    {
                        if(j==2)  //判断二月有多少天
                          {
                              if(year2%4==0&&year2%100!=0||year2%400==0)//判断是不是瑞年
                                 {
                                     days+=29;
                                 }
                              else
                                 {
                                     days+=28;
                                  }
                            }
                        else if(j<=7&&j%2!=0||j>7&&j%2==0)//计算大月有多少天
                           {
                               days+=31;
                            }
                        else
                            {
                               days+=30;
                             }
                       }
                    return days;
                 }
    /****************哪年哪月有多少天*******************/
          static int GetDaysOfMonth(int year3, int month3)
              {
                 int dates;
                 if(month3==2)
                    {
                       if(year3%4==0&&year3%100!=0||year3%400==0)
                          {
                             dates=29;
                          }
                       else
                          {
                             dates=28;
                           }

}
                  else if(month3<=7&&month3%2!=0||month3>7&&month3%2==0)
                      {
                         dates=31;
                      }
                  else
                      {
                         dates=30;
                      }
                   return dates;
               }
         }

C#:查询某年(1900-2100)某月的日历的更多相关文章

  1. 关于SQL查询某年数据 和DATEPART 函数的使用

    数据库查询某年数据(sql server)select *from 表名 where YEAR(存时间的字段名) =某年select *from News where YEAR(addDate) =2 ...

  2. 用sql查询当天,一周,一个月的数据

    用sql查询当天,一周,一个月的数据   数据查询,不管在网站还是在系统,都很常见,下文是介绍最常见的以日期查询的语句 select * from ShopOrder where datediff(w ...

  3. RobotFramework:查询条件为最近一个月的数据(2019-07-09 00:00:00.000 到 2019-08-07 23:59:59.999)

    自动化测试中遇到,默认查询条件为最近一个月,所以起始时间就应该为(2019-07-09 00:00:00.000 到  2019-08-07 23:59:59.999) test ${current_ ...

  4. Mysql 查询天、周,月,季度、年的数据

    Mysql 查询天.周,月,季度.年的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 ...

  5. sql server查询某年某月有多少天

    sql语句如下: ),) date from (),,)+'-01' day) t1, ( ) t2 ),) ),,)+'%' 查询结果如下: 2017年2月共有28天,查询出28条记录.

  6. 报表统计——java实现查询某年某月每天数据,没数据补0

    一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.前提:提供的工具方法——获取某月有多少天 //通过年份和月份确定该月的 ...

  7. 报表统计——java实现查询某年12个月数据,没数据补0

    一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.mapper层sql语句,返回统计好的月份与对应月份的数据. < ...

  8. sql查询当天,一周,一个月数据的语句

    --查询当天:  select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info w ...

  9. 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月1号开始 * 2.星期 : 直接用总天数对7求余数 31 28 59 / 7 = 5 * 3.以\t来个开

    public class Demo4 { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...

随机推荐

  1. 11g oracle 用户密码过期问题

    Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天.如下:select * from dba_profiles w ...

  2. Spring MVC URL的映射问题 ;Spring MVC 跳转与iframe包含地址问题

    /login/login.html 进行form提交,登录之后的页面位于/main/frame.jsp; 这样的controller中的地址需要映射成/main/login.do,然后在control ...

  3. C# 汉字转拼音 将中文转换成拼音

    //建立一个公共类,用于转换汉字 public class ChnToPh { //定义拼音区编码数组 private static int[] getValue = new int[] { -,-, ...

  4. Mysql-Proxy代理配置

    一.Mysql-Proxy原理 Mysql-Proxy是一个处于你的client端和Mysql Server端之间的一个简单程序,它可以监测.分析和改变他们的通信.它使用灵活没有限制,常见的用途包括: ...

  5. loadrunner Analysis :SLA(Service Level Agreement服务水平协议)

    SLA是为负载场景定义的具体目标,用于与实际负载结果比较,确定系统是否达到性能目标. 1.1.1     设置SLA(以Transaction Response Time(Average)为例) 可以 ...

  6. leetcode刷题总结

    题外话 今年大三,现正值寒假时间,开学就开始大三下学期的生活了. 在大三临近结束的时间,也就是复习考试的时间里,我每天都会用早上的时间来刷codewars.刚开始玩的时候,一到8kyu的题目如果稍微难 ...

  7. GCD简介

    什么是GCD 全称是Grand Central Dispatch,可译为"牛逼的中枢调度器" 纯C语言,提供了非常多强大的函数   GCD的优势 GCD是苹果公司为多核的并行运算提 ...

  8. Java连接数据库(mysql,sqlserver)

    犹记当年为了使用java程序连接mysql数据库花费一天时间,最后发现是没有导入外包,如今看来真的发现自己那时有点二,也怪我使用的教科书上没有说明这点(强行甩锅,哈哈).今天分享出来,,希望后者不因为 ...

  9. 内功心法 -- java.util.ArrayList<E> (5)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  10. 自学javaee程序员之路--ssm的小项目(一)

    大家好~我叫王聪,缩写是WC(不是厕所!不是厕所!).是一名某内陆大四的学生.这两个月自学了javaee---关于web的一些心得,分享记录一下.建立这个博客的目的是望各位前辈学长指正批评~~也是建立 ...