public void showTime(){
/*万年历 :  
1900年1月20号是星期几?
1月1号是星期一
1月8号是星期一
1月15号是星期一
1%7 = 1
8%7 = 1
15%7 = 1
★: 1. 用日期数去%7可以得到星期数 
1900年2月12号是星期几?
★: 2. 从1月1号 直到 2月12的总天数 % 7 得到星期数
★★★: 为什么要算星期几?因为在打印万年历的时候,需要知道一个月份的1号是星期几,才能正确打印之后的日期 
★★★:2015年8月1号是星期几?
1900-1-1到2015-8-1的总天数  % 7 */
int year=2017;
int month=11;
double all=0;
//从1900-1-1到year的前一年的总天数
all=getAllYearDay(year);
//从year的1月到month的前一个月的总天数
all+=getAllMonthDay(year,month);
System.out.println("总日子共有:"+all+"天");
//获得当前month的1号的对应总天数,因为这个总天数可以确定1号打印的位置(星期几)
//获得1号是星期几的数字,因为这个week数字确定1号前面的空格个数
int week=(int) (all%7);
//打印表头和1号之前的空格部分
for (int j = 0; j < week; j++) {
System.out.print(0+"\t");
}
//开始打印月历,但是你要获得该月到底要打印多少天
//开始循环打印,如果是星期天则换行
int dates=getMonthDay(year,month);
for (int i = 1; i < dates; i++) {
System.out.print(i+"\t ");
if((i+week)%7==0){
System.out.println();
}
}

}
//得到某月有多少天
int getMonthDay(int year,int month){
int dates=0;
for (int i = 1; i < month; i++) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
dates=31;
}else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
dates=29;
}else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
dates=28;
}else{
dates=30;
}
}
return dates;
}
//从year的1月到month的前一个月的总天数
int getAllMonthDay(int year,int month){
int all=0;
for (int i = 1; i < month; i++) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
all+=31;
}else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
all+=29;
}else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
all+=28;
}else{
all+=30;
}
}
return all;
}
//从1900-1-1到year的前一年的总天数
double getAllYearDay(int year){
double all=0;
for (int i = 1900; i < year; i++) {
if( i % 4==0 && i % 100 != 0 ||i % 400 == 0){
all+=366;
}else{
all+=365;
}
}
return all;

}

打印结果:

觉得有用的朋友希望可以帮忙“赞”一下哟(赠人玫瑰手有余香),谢谢^_^

万年历java的更多相关文章

  1. 万年历---java版

    程序难点 : 1. 每年每个月有多少天? 2. 每个月的1号是星期几? 3. 每年的2月份是多少天? 难点解析 : 1. 每年每个月除去1 3 5 7 8 10 12是31天以外, 其他月份(除去2月 ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. 小JAVA大世界之万年历

    import java.util.Scanner; public class Calendar { public static void main(String[] args) { // 万年历 in ...

  4. 算法,java代码实现打印万年历

      万年历 以1900年1月1号星期一为时间原点 星期日 第一天 星期一 第二天 星期二 第三天 星期三 第四天 星期四 第五天 星期五 第六天 星期六 第七天            1.计算出当前日 ...

  5. Java流程控制练习--万年历

    Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...

  6. 用java进行简单的万年历编写

    import java.util.Scanner; public class PrintCalendarDemo1 { public static void main(String[] args) { ...

  7. java 实现万年历

    曾经初学java写万年历,都是採用主要的算法求出是否闰年闰月 计算公式例如以下 int year = 2014, month = 8, total = 0; if (month == 1 || mon ...

  8. java万年历

    import java.util.Scanner; public class perpetualCalendar { public static void main(String[] args) { ...

  9. java——万年历

    package oop; import java.util.Scanner; public class 万年历 { public static void main(String[] args) { / ...

随机推荐

  1. 【机器学习实战】第11章 使用 Apriori 算法进行关联分析

    第 11 章 使用 Apriori 算法进行关联分析 关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务. 这些关系可以有两种形式: 频繁项集(frequent item sets): 经常出 ...

  2. Sql语句varchar或nvarchar字段条件前加N的性能差异

    Sql语句varchar或nvarchar字段条件前加N的话是对这个字段进行Unicode编码, 这样做的目的是避免在这种字段中存入俄文.韩文.日文的情况下有可能会出现乱码. 但这样做也会有性能问题, ...

  3. Django扩展自定义manage命令

    使用django开发,对python manage.py ***命令模式肯定不会陌生.比较常用的有runserver,migrate... 本文讲述如何自定义扩展manage命令. 1.源码分析 ma ...

  4. ActiveMQ——activemq的详细说明,queue、topic的区别(精选)

    JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic).主要区别就是是否能重复消费. 点对点:Queue,不可重 ...

  5. Volley图片加载并加入缓存处理(转自http://blog.csdn.net/viewhandkownhealth/article/details/50957024)

    直接上代码  两种方式 ImageView 和NetworkImageView 如有问题或者好的建议.意见 欢迎大家加入技术群(群号: 387648673 ) 先自定义全局Application 获取 ...

  6. php学习资料

    http://medoo.in/轻量级 PHP 连接数据库的类库 http://www.thinkphp.cn/国产 PHP 万金油框架,快速做项目,效率一般,BUG 众多

  7. 《剑指Offer》附加题_用两个队列实现一个栈_C++版

    在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push ...

  8. 基于zookeeper的Swarm集群搭建

    简介 Swarm:docker原生的集群管理工具,将一组docker主机作为一个虚拟的docker主机来管理. 对客户端而言,Swarm集群就像是另一台普通的docker主机. Swarm集群中的每台 ...

  9. HDFS 简介

    hadoop分别从3个角度将主机划分为2种角色 最基本的是Master 和 从HDFS角度,将主机划分为namenode和datanode,在分布式文件系统中,目录管理很重要,管理目录相当于主人 从m ...

  10. Hadoop(十四)MapReduce原理分析

    前言 上一篇我们分析了一个MapReduce在执行中的一些细节问题,这一篇分享的是MapReduce并行处理的基本过程和原理. Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于had ...