7.3.4 日历处理的实例解析

对于月历类来说,最重要的参数是年、月、日、小时、分、秒、毫秒,所以Calendar类提供了这些参数:


YEAR(年)、MONTH(月)、DATE(日)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)、MILLISECOND(毫秒)


另外一年还有十二个月的参数,所以Calendar类提供了:


JANUARY(一月)、FEBRUARY(二月)、MARCH(三月)、APRIL(四月)、MAY(五月)、JUNE(六月)、JULY(七月)、

AUGUST(八月)、SEPTEMBER(九月)、OCTOBER(十月)、NOVEMBER(十一月)、DECEMBER(十二月)


依次表示1~12个月份,需要注意的是它们从零开始计算。

例如:


get(Calendar.MONTH)+1


另外,一周的每一天使得Calendar类提供了:


SUNDAY(=1)、MONDAY(=2)、TUESDAY(=3)、WEDNESDAY(=4)、THURSDAY(=5)、FRIDAY(=6)、SATURDAY(=7)


如果获取星期或改变星期时使用:


DAY_OF_WEEK


如果表示上午/下午:


AM_PM


【实例7.8】上面介绍了很多常用函数和属性常量,下面看一个实例。


01 import java.util.*;

02 public class calendar1

03 {

04 public static void main(String args[])

05 {

06 GregorianCalendar gc=new GregorianCalendar();

07 String now=gc.get(Calendar.YEAR)+"年"+(gc.get(Calendar.MONTH)+1)+"月

08"+gc.get(Calendar.DATE)+"日"+gc.get(Calendar.HOUR)+"时"

+gc.get(Calendar.MINUTE)+"分

09"+gc.get(Calendar.SECOND)+"秒";

10 System.out.println("当前时间是:"+now);

11 }

12 }


【代码说明】这个程序段很简单,对这个类中每一种函数都展示了其用法。读者可以根据上面的介绍依次查看每个函数。

【运行结果】


当前时间是:2009年8月26日11时32分50秒


【实例7.9】下面来编写一个稍微复杂的实例,然后来仔细分析这个程序段的编程思路。有个人的生日是阳历7月20日,请输出2007—2020年之间,这个人每年的生日究竟是星期几。


01 import java.util.*;

02 public class calendar2

03 {

04 public static void main(String[]args)

05 {

06 GregorianCalendar gc=new GregorianCalendar();

07 final char[]kor_week={'日','一','二','三','四','五','六'};

08 for(int i=2007;i<=2020;i++)

09 {

10 gc.set(i, Calendar.JULY,20);

11 char week=kor_week[gc.get(Calendar.DAY_OF_WEEK)-1];

12 System.out.println(i+"年的生日是星期"+week);

13 }

14 }

15 }


【代码说明】这个程序的具体代码,很容易读懂。在此,需要讲述的是一个编程的思路问题。当拿到这个程序的要求时,首先分析是要求输出“2007—2020”年之间每年的生日究竟是星期几,这时就要考虑使用循环语句。

通过“set”函数将年份依次改为2007—2020年,这样就可以通过“get”函数返回此年份月份和日子到底是星期几,如果是这样分析,编写它就不难了,剩下的只不过是一些细节问题。

【运行结果】


2007年的生日是星期五

2008年的生日是星期日

2009年的生日是星期一

2010年的生日是星期二

2011年的生日是星期三

2012年的生日是星期五

2013年的生日是星期六

2014年的生日是星期日

2015年的生日是星期一

2016年的生日是星期三

2017年的生日是星期四

2018年的生日是星期五

2019年的生日是星期六

2020年的生日是星期一