今天看GregorianCalendar和Calendar类,顺手写的,可以打印当年的日历,代码如下:
/**
* 打印程序运行当年的日历,程序运行当日以*号表示
* @version J2SDK 1.4.2_10-b03
* @author 楼竞
* @author http://www.loujing.com
*/
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
GregorianCalendar d = new GregorianCalendar();
int year = d.get(Calendar.YEAR);
int month = d.get(Calendar.MONTH);
int today = d.get(Calendar.DAY_OF_YEAR);
d.set(d.get(Calendar.YEAR),0,1); //设置为当年1月1日(0表示1月)
do {
System.out.println(d.get(Calendar.MONTH) + 1 + "月");
System.out.println("Sun Mon Tue Wed Thu Fri Sat"); //输出月表头
month = d.get(Calendar.MONTH); //取得月份
int weekday = d.get(Calendar.DAY_OF_WEEK); //获得当月1号,在一周中是星期几
for(int i = Calendar.SUNDAY; i < weekday; i++)//控制当月1号的起始位置
System.out.print(" ");
do {
weekday = d.get(Calendar.DAY_OF_WEEK);
if (d.get(Calendar.DAY_OF_MONTH) < 10) //如果日期小于10,多输出一个空格,以便对齐
System.out.print(" ");
System.out.print(d.get(Calendar.DAY_OF_MONTH));//输出日期
if (today == d.get(Calendar.DAY_OF_YEAR)) //如果是当日,则输出一个*号
System.out.print("* ");
else
System.out.print(" ");
if (weekday == Calendar.SATURDAY) //到达周六,则换行
System.out.println();
d.add(Calendar.DAY_OF_YEAR,1); //日期累加
} while (d.get(Calendar.MONTH) == month); //如果还是当月,继续循环
System.out.println("\n");
} while (d.get(Calendar.YEAR) == year); //如果还是当年,继续循环
}
}
-------程序输出-------
1月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
2月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27* 28
3月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
4月
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
5月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
6月
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
7月
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
8月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
9月
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
10月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
11月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
12月
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31