0

Java程序打印文本日历

作者:楼竞  发表于:2006年02月27日 18:55  分类:Program   2,279 次阅读 

今天看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

本文固定链接: http://www.loujing.com/blog/java-calendar/ | 楼竞网站

给我留言

快捷键:Ctrl+Enter