JAVA-小白入门小程序-动态日历
(本人为刚入门小白,只为学习分享,如有什么不足希望各位大牛指点学习!谢谢!)
第一次写博客,也不知道要写什么,先上效果吧.
动态日历:
该程序主要java.util.Calendar类实现.(如不了解Calendar类请往下看)
Calendar:
Calendar类是一个抽象类,它有一些日历字段之间的转换方法,并且有获取日历字段的一些方法,如获取某一天是某周的第几天等.(具体内容请进入jdk中查询)(注意事项:Calendar类中,月份是从0月开始计算的,每一周的第一天是星期天.如要了解历史请查询:格里高利历).
Calendar用到的方法:
Calendar.getInstance() //通过getInstance方法,获取一个Calendar类型的日历
使用默认时区和区域设置获取日历。
set(int field, int value)//设置年月日等时间
将给定的日历字段设置为给定的值。
get(int field) //获取指定日历字段
返回给定日历字段的值。
getActualMaximum(int field)//获取指定日历字段最大值(如这个月最大有多少天)
给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar 。
分析:
实现动态日历的核心思想:
我们会想到输入的月份有多少天,该月的第一天是星期几,如何实现空格和换行.用原有的思维,我们需要判断该年是否是闰年,从1900年1月1日到现在多少天(因为1900年1月1日是星期一,是大部分日历的基准日期)来获取这个月第一天为星期几.如此一套操作下来代码量就比较多了.
所以java的util(工具包)中有一个类专门来实现日历的计算(如何实现的请自行看源码).即可以用较少的代码完成该项目.
设计思路:
1.输入要查询的年,月把Calendar设置为该年该月的第一天.
2.获取这一天为该星期的第几天(即可获得输出日期前,需要空的个数.(第几天-1))
3.实现换周换行.(当每输出7次就证明一周过完,既需要回车换行)
(练习小程序,所以比较简便.勿喷 T.T)
代码如下:
package com.softeem.lesson;
import java.util.Calendar;
import com.softeem.lesson12.date.LiveTimer;
/**
* 动态日历小程序
* @author Tsir_6_6
*
*/
public class Exp04 {
/**
*
* 通过年,月获得日历表
* @param year
* @param month
*/
public void showDate(int year,int month) {
/**格里高利历*/
Calendar c = Calendar.getInstance();
/**初始化设置时间的年,月,日(某某年的某某月的第一天)*/
c.set(Calendar.YEAR, year);
/**因Calendar是0为第一个月,所以设置月份-1*/
c.set(Calendar.MONTH, month - 1);
c.set(Calendar.DAY_OF_MONTH, 1);
/**获取这一天是当周的第几天,-1获得前面应空的个数*/
int space = c.get(Calendar.DAY_OF_WEEK) - 1;
/**获取这个月的最大天数*/
int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
/**Calendar每星期的第一天为星期天*/
System.out.println("星期天"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"星期五"+"\t"+"星期六");
System.out.println("==================================================================");
/**输出空格*/
for (int i = 0; i < space; i++) {
System.out.print("\t");
}
/**输出天数*/
for (int i = 1; i <= maxDay; i++) {
/**规划指定格式*/
if(i < 10) {
System.out.print("0"+i+"\t");
}else {
System.out.print(i+"\t");
}
space++;
/**天数达到一周换行*/
if(space == 7) {
System.out.println();
/**初始化空格数*/
space = 0;
}
}
}
public static void main(String[] args) {
Exp04 exp = new Exp04();
exp.showDate(2020, 3);
}
}