JAVA-小白入门小程序-动态日历

(本人为刚入门小白,只为学习分享,如有什么不足希望各位大牛指点学习!谢谢!)
第一次写博客,也不知道要写什么,先上效果吧.

动态日历:

java前端画一个日历 java设计日历小程序_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);
	}
}