JAVA-小白入门小程序-动态日历
(本人为刚入门小白,只为学习分享,如有什么不足希望各位大牛指点学习!谢谢!) 第一次写博客,也不知道要写什么,先上效果吧.
动态日历:
该程序主要java.util.Calendar类实现.(如不了解Calendar类请往下看)
Calendar:
Calendar类是一个抽象类,它有一些日历字段之间的转换方法,并且有获取日历字段的一些方法,如获取某一天是某周的第几天等.(具体内容请进入jdk中查询)(注意事项:Calendar类中,月份是从0月开始计算的,每一周的第一天是星期天.如要了解历史请查询:格里高利历).
Calendar用到的方法:
Calendar
.getInstance()
使用默认时区和区域设置获取日历。
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
;
public class Exp04 {
public void showDate(int year
,int month
) {
Calendar c
= Calendar
.getInstance();
c
.set(Calendar
.YEAR
, year
);
c
.set(Calendar
.MONTH
, month
- 1);
c
.set(Calendar
.DAY_OF_MONTH
, 1);
int space
= c
.get(Calendar
.DAY_OF_WEEK
) - 1;
int maxDay
= c
.getActualMaximum(Calendar
.DAY_OF_MONTH
);
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);
}
}