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 ...
随机推荐
- JavaScript 扯几句单线程相关
JavaScript 扯几句单线程相关 众所周知,Javascript是单线程执行的,这也就是说:JavaScript在同一个时间上只能处理一件事.他不像C,Java等这些多 线程的,可以开不同的线程 ...
- 如何测试LBS功能
在LBS功能的开发中,为了保证通用性,服务器存在的坐标是基于wgs84的,这个通常由GPS设备传过来,对于PC来说,如何获得这个值呢?可以利用Google Earth来获得,并修改显示的坐标系统,“工 ...
- css基础详解(1)
css讲解 声明 1:这里的文字都是我从我自己csdn账号拷贝过来,是本人学习总结的结晶,所以请尊重本作品.2:如要要转载本文章,则要说明文字的出处.3:如有哪里不对或者哪里还不够完善欢迎大家指出. ...
- Codeforces758B
B. Blown Garland time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...
- .Net Core 之 MSBuild 介绍
前言 关于 .NET Core 旧版本的 sdk 介绍可以参看我以前的 这篇 文章. 8 个小时前,.NET Core 项目组释放了 .NET Core 新一轮的 sdk 工具更新,即 RC4 版本 ...
- POJ 1308 Is It A Tree?--题解报告
Is It A Tree? Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31092 Accepted: 10549 D ...
- unity 双面shader
Shader "Custom/DoubleFace" { Properties { _Color ("Main Color", Color) = ...
- JavaScript刷新页面的方法(包括Frame框架的刷新方式)
JavaScript刷新页面的方法 1 history.go(0) 去指定的某页 2 window.location.reload()刷新当前页面 window.location.relo ...
- java udp 发送小数数字(较难)
代码全部来自:http://825635381.iteye.com/blog/2046882,在这里非常感谢了,我运行测试了下,非常正确,谢谢啊 服务端程序: package udpServer; i ...
- ZooKeeper 学习笔记
ZooKeeper学习笔记 1. zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...