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. js判断浏览器在PC中打开还是移动设备中打开

    var browser = {                            versions: function () {                                va ...

  2. WInform 创建一个简单的WPF应用

    (一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...

  3. redis使用Lua脚本

    最近在看<Redis入门指南>第二版,感觉收获挺大,推荐大家有时间看一看.其中有一章讲Lua脚本,感觉挺实用,把总结整理一下. Redis在2.6中推出了脚本功能,允许开发者使用Lua语言 ...

  4. Fiddler 模拟请求的操作方法

    此文记录使用Fidder Web Debugger工具,模拟请求的操作步骤! 首先简述一下fiddler的使用: 1.下载安装Fidder抓包工具. 2.打开fiddler发现有左边的栏有请求的url ...

  5. .md即markdown文件的基本常用编写语法(图文并茂)

    序言: 很久没有写博客了,感觉只要是不写博客,人就很变得很懒,学的知识点感觉还是记不住,渐渐地让我明白,看的越多,懂的越少(你这话不是有毛病吗?应该是看的越多,懂的越多才对),此话怎讲,当你在茫茫的前 ...

  6. 用Spark学习矩阵分解推荐算法

    在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法. 1. Spark推荐算法概述 在Spark MLlib ...

  7. Salesforce使用truncate清空数据库

    如果想快速的清空MySQL中的表,可以使用Truncate命令.Truncate能够快速的,对数据进行无差别的清空. 在Mysql中使用truncate的语法是TRUNCATE TABLE [Tabl ...

  8. 如何使用Babel将ES6转码为ES5?

    一.前言: 当我们还在沉迷于ES5的时候,殊不知ES6早就已经发布几年了.时代在进步,WEB前端技术也在日新月异,是时候做些改变了! ECMAScript 6(ES6)的发展速度非常之快,但现代浏览器 ...

  9. 根据dba_hist_osstat统计CPU占用情况

    在11g里面,视图dba_hist_osstat用来记录OS级别的time时间指标.视图dba_hist_osstat_name显示了相关的指标名称. SYS@/dzgddb> select * ...

  10. iOS详解MMDrawerController抽屉效果(一)

      提前说好,本文绝对不是教你如何使用MMDrawerController这个第三方库,因为那太多人写了 ,也太简单了.这篇文章主要带你分析MMDrawerController是怎么实现抽屉效果,明白 ...