//输入年份和月份,打印出这个月的日历表
/*
1.1900年1月1日是星期一
2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天
1)
3.总天数%7得出从星期几开始
注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元。
so,在本程序中不考了1900年以前的年份了。有兴趣的可以自己研究下。
*/
import java.util.Scanner;
class Calender{ public static void main(String[] args){ print(); } //打印输出
public static void print(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份(1~12):");
int month = sc.nextInt(); int days = getDays(year, month);//getDays方法详细请往下看
//days+1:day是总天数,输入月份的总天数只是这个月之前的天数,
//加上1变为这个月开始的第一天
int week = days%7==0?1:days%7+1;//开始的第一天是星期几
System.out.println("日\t一\t二\t三\t四\t五\t六"); //输出第一行(第一个星期)空出来部分
for(int i=1; i<=week; i++){
System.out.print(" \t");
} //输出第一行(第一个星期)各天
for(int i=1; i<=7-week; i++){
System.out.print(i+"\t");
} System.out.println(); //1~12月的个月天数
int monthDay = 0;
switch(month){
case 2:
if(year%4==0&&year%100!=0 || year%400==0 ){
monthDay=29;
}else{
monthDay=28;
}
break; case 4:
case 6:
case 9:
case 11:
monthDay=30;
break; default :
monthDay=31;
break;
} //输出剩下的日期,从第二周开始了,所以是8-week
for(int i=8-week; i<=monthDay; i++){ System.out.print(i+"\t"); //每七天换一行则当日期能整除7就换行
if((i+week)%7==0){
System.out.println();
}
} } /*
计算当年当月的距1900年1.1的总天数
*/
public static int getDays(int year, int month){
//判断这年是闰年或者平年,得到年的总天数
int day1=0, day2=0; for(int i=1900; i<year; i++){
if(i%4==0&&i%100!=0 || i%400==0){
day1+=366;
}else{
day1+=365;
}
} //得到月的总天数
for(int i=1; i<month; i++){
switch(i){
case 2:
if(year%4==0&&year%100!=0 || year%400==0 ){
day2+=29;
}else{
day2+=28;
}
break; case 4:
case 6:
case 9:
case 11:
day2+=30;
break; default :
day2+=31;
break;
}
} return day1+day2; } }

Java万年历,输入年月获取该年月日历表的更多相关文章

  1. java 根据年月获取当前年月的最后一天,获取当前年月有多少天

    new Date( "2019-08-" + 1)   获取2019年8月的最后一天   结果为--2019-08-31 new Date(2019, 8, 0).getDate( ...

  2. Python 学习笔记:根据输入年月获取该月的第一天和最后一天

    目的: 给定一个时间,比如:2020.02,要求返回所输入月份的第一天及最后一天,比如:('2020.02.01', '2020.02.29') 参考博客:https://blog.csdn.net/ ...

  3. [python]获取当前年月

    import time time.strftime('%Y%m',time.localtime(time.time()))#获取当前年月

  4. js 根据年月获取当月有多少天_js获取农历日期_及Js其它常用有用函数

    //根据年月获取当月有多少天 function getDaysInMonth(year, month) { debugger; //parseInt(number,type)这个函数后面如果不跟第2个 ...

  5. Java 字符终端上获取输入三种方式

    http://blog.csdn.net/hongweigg/article/details/14448731 在Java 字符终端上获取输入有三种方式: 1.java.lang.System.in ...

  6. 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token

    一.access_token简介 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等, 开 ...

  7. Java实现Internet地址获取

    Java实现Internet地址获取 代码内容 输入域名输出IPV4地址 输入IP地址输出域名 支持命令行输入 支持交互式输入 代码实现 /* nslookup.java */ import java ...

  8. Java:输入输出流 java.io包的层次结构

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  9. 23、java 通过System.getProperties()获取系统参数

    1.java的System.getProperty()方法可以获取的值 java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor. ...

随机推荐

  1. 【Head First Java 读书笔记】(七)继承

    继承与多态 了解继承 继承的关系意味着子类继承了父类的实例变量和方法.父类比较抽象,子类比较具体. 继承层次的设计 找出具有共同属性和行为的对象(用继承来防止子类中出现重复的程序代码) 设计代表共同状 ...

  2. mysql复制表以及复制数据库

    (一)将旧表复制到新表 1.CREATE TABLE新表 SELECT* FROM旧表; 该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等. CR ...

  3. Java NIO学习-详细内容(一)

    一.三大类 1.Channels FileChannel DatagramChannel SocketChannel ServerSocketChannel 2.Selector与SelectionK ...

  4. MlskincolorButton使用方法

    颜色设置 图标添加Png格式

  5. 2、ASP .NETCore 2.0之视图

    一.Razor基础 声明:Razor不是编程语言,是服务器端标记语言.Razor是一种允许开发者在网页中嵌入服务器端代码的标记语法(主要是针对VB和C#). 1.C#中Razor基本语法 (1).Ra ...

  6. oracle goldengate的两种用法

    此文已由作者赵欣授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自从oracle收购来了goldengate这款产品并以后对它做了一系列改进后,有非常多的用户使用它做数据迁移 ...

  7. depth深度

    du.tree.find ls -li find ./ -inum 1193220 | while read a ;do rm -f $a;done find ./ -size 0b -type f ...

  8. WinForm Column cannot be added because its CellType property is null.

    在Winform  DatatGridView 控件中绑定了一个模型的属性,结果在生成窗口时,发生错误,异常信息如下 : Column cannot be added because its Cell ...

  9. Java_内存泄漏_实例1

    版权声明:本文为博主原创文章,转载请注明出处. 记一次压测时Java内存泄漏问题的发现过程(2017-08-14) [前篇] ①20170811进行A系统与B系统之间的会话功能进行压测,加上脚本准备期 ...

  10. Corn表达式

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...