新的起点 新的开始

快乐生活 !

Calendar的使用(简单)

您可以使用Date来取得完整的日期时间显示,但如果您想要单独取得某个时间或日期资讯的话该如何?例如您想知道现在是5月的第几天?

您要使用Calendar类别,在这之前,您要先知道Calendar的一些方法取回的数字是对应于Calendar本身的常数,也就是说并不是您取回1 这个数字,就表示今天是星期一。

想要取得现在的时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:
Calendar rightNow = Calendar.getInstance();
 

如果现在您想知道现在是西元几年,则可以使用get()方法并指定常数,例如:
System.out.println(rightNow.get(Calendar.YEAR));
 

如果现在是2005年,则上例会显示2005的数字,依照这个例子,假设撰写本文的时间是5月份,而您现在想使用程式取得现在的月份,则下例您可能会有些困惑:
System.out.println(rightNow.get(Calendar.MONTH));
 

程式会显示4这个数字,而不是您预期的5,因为传回的4并不是代表月份,而是对应于Calendar.MAY常数的值, Calendar在月份上的常数值从Calendar.JANUARY开始是0,到Calendar.DECEMBER的11,所以您如果想要显示传回值 的真正意涵,可以如下撰写:
String[] months = {"一月", "二月", "三月", "四月",
                    "五月", "六月", "七月", "八月",
                    "九月", "十月", "十一月", "十二月"};
       
Calendar rightNow = Calendar.getInstance();
System.out.println(months[rightNow.get(Calendar.MONTH)]);
 

同样的,如果您想要取得星期资讯,要记得常数从Calendar.SUNDAY是1,到Calendar.SATURDAY是7,由于对应的数并不是从0 开始,所以如果要使用如上的阵列来对应的话,第一个阵列值就不包括资讯,例如:
String[] dayOfWeek = {"", "日", "一", "二",
                           "三", "四", "五", "六"};
       
Calendar rightNow = Calendar.getInstance();
System.out.println(dayOfWeek[
                     rightNow.get(Calendar.DAY_OF_WEEK)]);
 

总之您要记得传回的值是对应于Calendar的某个常数,会这样设计的原因在于实际上英文中对于星期或月份并不附以数字上的意涵,如Sunday、 Monday等,幸而除了月份、星期之外,传回的值都对应于真正的时间意涵,毕竟像西元、小时、分等等本身就是以数字表示。

在取得一个Calendar的实例后,您可以使用setTime()方法给它一个Date物件,将之改变为Date目前的时间,例如:
Calendar c = Calendar.getInstance();
Date date = new Date(10000000000L);
c.setTime(date);

还可以使用add()方法,来改变Calendar的时间,例如:
c.add(Calendar.MONTH, 1); // 目前时间加1个月
c.add(Calendar.HOUR, 3); // 目前时间加3小时
c.add(Calendar.YEAR, -2); // 目前时间减2年
c.add(Calendar.DAY_OF_WEEK, 3); // 目前的时间加3天

如果打算只针对日期中某个栏位加减,则可以使用roll()方法,例如:
c.roll(Calendar.MONTH, 10); // 只增加月的栏位值为10个月

在上例中,假设是2006/10/1,则执行过后的Calendar实例,其中的时间将是2006/8/1,也就是只改变月份的栏位。

posted on 2007-10-11 13:34 advincenting 阅读(555) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

公告

Locations of visitors to this page

导航

<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(13)

随笔分类(71)

随笔档案(179)

文章档案(13)

新闻分类

IT人的英语学习网站

JAVA站点

优秀个人博客链接

官网学习站点

生活工作站点

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜