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年的生日是星期一