使用Java中的Date和Calendar类
Java语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分.所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象.我们写了两篇文章,这是第一篇,我们将大概的学习日期,日期格式,日期的解析和日期的计算.
我们将讨论下面的类:
1、具体类(和抽象类相对)java.util.Date
2、抽象类java.text.DateFormat和它的一个具体子类, java.text.SimpleDateFormat
3、抽象类java.util.Calendar和它的一个具体子类, java.util.GregorianCalendar
具体类可以被实例化, 但是抽象类却不能.你首先必须实现抽象类的一个具体子类.
Date类从Java开发包(JDK)1.0就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年.这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它.这种改进旨在更好的处理日期数据的国际化格式.就象在JDK1.1中一样, Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数.
一、创建一个日期对象
让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子.这个时间通常被称为Java虚拟机(JVM)主机环境的系统时间.
importjava.util.Date;
publicclassDateExample1{
publicstaticvoidmain(String[]args){
//Getthesystemdate/time
Datedate=newDate();
System.out.println(date.getTime());
}
}
在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是1001803809710.在这个例子中, 值得注意的是我们使用了Date构造函数创建一个日期对象, 这个构造函数没有接受任何参数.而这个构造函数在内部使用了
System.currentTimeMillis()方法来从系统获取日期.
那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了.我们如何才能以一种用户明白的格式来显示这个日期呢?在这里类java.text.SimpleDateFormat和它的抽象基类java.text.DateFormat就派得上用场了.
二、日期数据的定制格式
假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年.下面的例子展示了如何