C#:查询某年(1900-2100)某月的日历
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)某月的日历的更多相关文章
- 关于SQL查询某年数据 和DATEPART 函数的使用
数据库查询某年数据(sql server)select *from 表名 where YEAR(存时间的字段名) =某年select *from News where YEAR(addDate) =2 ...
- 用sql查询当天,一周,一个月的数据
用sql查询当天,一周,一个月的数据 数据查询,不管在网站还是在系统,都很常见,下文是介绍最常见的以日期查询的语句 select * from ShopOrder where datediff(w ...
- 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_ ...
- Mysql 查询天、周,月,季度、年的数据
Mysql 查询天.周,月,季度.年的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 ...
- sql server查询某年某月有多少天
sql语句如下: ),) date from (),,)+'-01' day) t1, ( ) t2 ),) ),,)+'%' 查询结果如下: 2017年2月共有28天,查询出28条记录.
- 报表统计——java实现查询某年某月每天数据,没数据补0
一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.前提:提供的工具方法——获取某月有多少天 //通过年份和月份确定该月的 ...
- 报表统计——java实现查询某年12个月数据,没数据补0
一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.mapper层sql语句,返回统计好的月份与对应月份的数据. < ...
- sql查询当天,一周,一个月数据的语句
--查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info w ...
- 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 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 ...
随机推荐
- js架构设计模式——MVC,MVP 和 MVVM 的图示及简单明了的区别说明
MVC,MVP 和 MVVM 的图示 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理 ...
- Java Ant Could not find the main class: org.eclipse.ant.internal.launching.remote.InternalAntRunner. Program
参考:http://blog.csdn.net/jiangtaoking/article/details/49151763 The solution is to go to Run as → Exte ...
- Android中SharedPreferences介绍和使用方法
1.SharedPreferences简介 为了保存软件的设置参数,Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使 ...
- Flex移动应用程序开发的技巧和窍门(二)
范例文件 flex-mobile-dev-tips-tricks-pt2.zip 这是关于Flex移动应用程序开发的技巧和窍门的一系列文章中的第二部分.第一部分 内容主要集中讨论了视图之间以及应用程序 ...
- HDU5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Spring AOP中的动态代理
0 前言 1 动态代理 1.1 JDK动态代理 1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的过滤功能 2 Spring AOP中的动态代理机制 2.1 ...
- 搭建typescript开发环境最详细的全过程
搭建typescript开发示例https://github.com/Microsoft/TypeScriptSamples typescript案例https://www.tslang.cn/sam ...
- 软通动力C语言机试题
#include <stdio.h> int charCount(char *str) { int iCount = 0; int i, j, k=0; char *p = str; ch ...
- 初识Jenkins
近期,接手了一个活,我要搭一个Jenkins持续集成的平台,所以,就把这次工作的收获分享给大家了. Jenkins是什么 Jenkins插件配置 Jenkins怎么用 新建job 系统配置 添加用户 ...
- Padding Borders Outlines Margins
简介: 在20世纪90年代,许多网页布局是使用table,使用table最主要的原因是因为可以放text到一个盒子里,但是这是一个比较复杂的过程,现在可以使用比较简单的方法,那就是css. 元素盒子: ...