通过一个简单的SWING日历BEAN开发学习Calendar类的使用(1)Calendar概述

类别:Java 点击:0 评论:0 推荐:

在日期格式化一文中我曾经简单的叙述了从一个java.util.Date日期类输出定制日期格式文本的方法。今天我们将进入一个真正的难题,去了解java中真正的日期对象Calendar类,并且在分析过程中建立一个实用swing日历Bean。

本人曾经在网上搜索过一些实用swing日历,但他们的实现都比较复杂,在这里我们将只使用一个类和标准的swing组件来实现这个日历,从而使这个Bean可以简单的被复用到别处。

 

一、Calendar是什么?

Calendar类是java标准库提供的日历工具类,它是一个抽象类。在它之中定义了很多有用的方法,最有用的就是可以自由变换日期和时间的set方法,以及得到定制日期输出的get方法。因为Calendar是一个抽象类,所以它不能使用new方法创建实例,它需要使用下面这个方法得到实例:Calendar calendar=Calendar.getInstance();

 

在Calendar类中把日期分成年、月、日、时、分、秒、微秒、星期八个部分,每一个部分又有一个或多个域(Field)与之对应,在使用set或get方法时,实际上是通过这些域来访问的。每一个域都是一个静态整型常量,它们是:

代表意义

AM_PM

上午/下午标志

DATE

完整日期标志

DAY_OF_MONTH

本月第几天

DAY_OF_WEEK

星期几

DAY_OF_WEEK_IN_MONTH

(尚未理解)

DAY_OF_YEAR

本年度的第几天

DST_OFFSET

时区偏移量

ERA

公元标志

HOUR

小时(12小时制,分上下午)

HOUR_OF_DAY

小时(24小时制,不分上下午)

MILLISECOND

微秒

MINUTE

分钟

MONTH

月份

SECOND

WEEK_OF_MONTH

本月第几个星期

WEEK_OF_YEAR

本年度的第几个星期

YEAR

年份

ZONE_OFFSET

相对GMT时区的微秒级时间偏移

 

除了通过set和get方法访问域值的功能外,Calendar还提供了一些有用的方法:

方法

参数

意义

getActualMaximum

int field

得到当前时间指定域值的最大值

getActualMinimum

同上

得到当前时间指定域值的最小值

getFirstDayOfWeek

 

 

 

 

得到当前时区一个星期第一天的表示,

如:在美国星期天是一个星期的第一天;

在法国则是星期一。

getTime

返回一个java.util.Date日期对象

getTimeInMillis

 

 

返回当前时间的微秒累计值,就像

java.util.Date中的getTime方法一样

getTimeZone

返回当前时区

isSet

int field

设置域是否可以改写

setFirstDayOfWeek

 

 

int value

 

 

设置当前时区一个星期第一天的表示,

如:在美国星期天是一个星期的第一天;

在法国则是星期一。

setTime

 

Date date

 

为当前日历重新设置一个java.util.Date

日期对象作为当前时间

setTimeInMillis

设置一个时间的微秒累计值作为当前时间

setTimeZone

TimeZone value

设置当前的时区

 

这里只是大概的叙述了一下Calendar类的概况,如果想更加清楚的了解其中的细节,请查看j2sesdk提供的Calendar源文件。

本文地址:http://com.8s8s.com/it/it16677.htm