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 ...
随机推荐
- Unable to resolve target 'android-XX'解决办法
在搭建好安卓编译环境后,我用Eclipse导入冲git上下载的安卓源码编译时,会提示 Unable to resolve target 'android-17' 等 “Unable to resolv ...
- Flex移动应用程序开发的技巧和窍门(一)
这是一个由多个部分组成的系列文章的第一部分,它包含了Flex移动开发的若干技巧.如果你过去习惯于桌面和Web编程,你会发现,开发移动应用程序将面临一系列新的挑战. 除了重新思考你的对数据存储和处理的策 ...
- ARC使用小结
内存管理基本原则 内存管理的依循下面的基本原则 自己生成的对象,那么既是其持有者 不是自己生成的对象,也可成为其持有者(一个对象可以被多个人持有) 如果不想持有对象的时候,必须释放其所有权 不能释放已 ...
- Weex系列一、构建Weex工程
Weex比React Native更简单,更容易学习,并且做到真正的跨平台,一套代码可以多个平台运行.所以建议大家都用Weex吧. 一.安装Node 已经安装Node的,请忽略过去. 检查Node是否 ...
- 小谈JavaScript中this的用法
"this"关键字是JavaScript中广泛应用的一种特性,但它经常也是这门语言中最容易混淆和误解的特性.那么"this"的实际意义是什么?它是如何求值的? ...
- 机器学习实战笔记(1)——k-近邻算法
机器学习实战笔记(1) 1. 写在前面 近来感觉机器学习,深度学习神马的是越来越火了,从AlphaGo到Master,所谓的人工智能越来越NB,而我又是一个热爱新潮事物的人,于是也来凑个热闹学习学习. ...
- 模拟java的split函数,分割字符串,类似于java的split方法
/*自定义oracle的分割函数*//*定义一个type,用户接收返回的数据集合类型*/create or replace type splitType as table of varchar2(40 ...
- 通过数组方式向Oracle大批量插入数据(10万条11秒)
1.创建数据库Person CREATE TABLE Person( id number, name nvarchar2() , age number , sex nvarchar2() , pass ...
- js原生轮播图
轮播图是新手学前端的必经之路! 直接上代码! <!DOCTYPE html><html lang="en"><head> <meta ch ...
- 关于js的parseInt方式在不同浏览器下的表现
今天开发期间遇到个需求要把日期格式转换成毫秒数 日期为:2015-08-10 split之后使用parseInt将2015,08,10分别转化为数字格式. 但是使用parseInt('08')的时候却 ...