Java 言提供了理日期的工具。其中一些工具在其他言中使用起更困一些。管如此,Java 言提供的那些工具几乎可以做建日期方面的任何事情,完全根据想要的格式对这些日期行格式化。
 Java 言出错时它会包含一叫做 Date 这个类对创建和理日期很有助。不幸的是,这个类在支持同步方面表不是很好,所以 Sun 添加了两个帮助改善这种

· Calendar 
· DateFormat 
首先讨论一下 Calendar,稍后再讨论 DateFormat

 Date 仍然比容易:

Date aDate = new Date(System.currentTimeMillis());
或者可以使用以下代

Date aDate = new Date();
这将为提供一表示前确切日期和时间 Date前地 格式示。国际化已超出了本程的范,只要知道得的 Date 本地机器的地区时间一致即可。

然有了一个实例,不能呢?坦率地太小了。我可以 Date 另一日期行比看前一日期是在后一日期的 before()  after()可以通过调 setTime() 日期重新新的时间setTime() 有一 long 参数该参数表示 1970  1  1 日午夜起至去了多少毫秒,也正是 System.currentTimeMillis() 返回的。在此之外,我受到了限制。


在,Date 们带来的混要多于它为们带来的有用性,因大部分日期理行都受到人的抨。人们习惯并设置部分 Date(比如,年、月,等等)。在,必时处 Date  Calendar 才能置部分 Date。但是一旦有了 Date 例,就可以使用 Calendar 并设置部分 Date。例如:

Date aDate = new Date(System.currentTimeMillis());
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(aDate);
里,我们创建了一 GregorianCalendar并将它时间设以前建的 Date。通 Calendar 用不同的方法,也能做到一点:

Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
 Calendar,我们现在可以访问和操作 Date 件。并设置部分 Date 也成个简单程。只需要在 Calendar 用适 getter  setter 即可,如下所示:

calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.YEAR, 1978);
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 37);
System.out.println(calendar.getTime());
这将输 1987  7  15 日上午 2  15  37 秒的格式化后的出字符串。(在 Calendar 上也有一些助方法,允时设置一些或几乎所有的件。)用的是 set()它带两个参数

·
想要置的 Date  field(或件)。
 
·
字段的
 
可以用 Calendar 中指定的常数来引用些字段。在某些情下,同一字段有一以上的名,比如 Calendar.DAY_OF_MONTH可以用 Calendar.DATE 引用。除了可能是 Calendar.MONTH  Calendar.DATE 之外,其他的都很简单。在 Java 言的日期中,月是基于 0 的(也就是月是 0),使得使用指定的常数来设置月份值明智之,但也使得正确地示日期成令人沮的事。小数值 0  24

一旦有一建立好的 Date,就可以提取其中的一部分。

System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR));
System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH));
System.out.println("The DAY is: " + calendar.get(Calendar.DATE));
System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR));
System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE));
System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND));
System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM));
置日期的格式化

通常可以使用 Date 格式化日期。在,必使用其他几个类

· DateFormat 
· SimpleDateFormat 
· DateFormatSymbols 
里,我们并不想介日期格式化所涉及的所有复杂事物。可以自己去。但我一些使用些工具的基

DateFormat 
们创建特定于所的格式化程序,如下所示:

DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT);
Date aDate = new Date();
String formattedDate = dateFormatter.format(today);
使用用于这种场所的默格式建了一格式化的日期字符串。在我的机器上,这个日期字符串看起这样的:

Nov 11, 2005
是默认样式,但所有的式都适用于我。我可以使用任何式。可以 DateFormat.getTimeInstance() 格式化时间,或者 DateFormat.getDateTimeInstance() 日期和时间一起格式化。以下是各种样式的出,都适用于美

日期 时间 日期/时间

DEFAULT  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM
SHORT  11/11/05 7:44 PM 11/11/05 7:44 PM
MEDIUM  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM
LONG  November 11, 2005 7:44:56 PM EST November 11, 2005 7:44:56 PM EST
FULL  Thursday, November 11, 2005 7:44:56 PM EST Thursday, November 11, 2005 7:44:56 PM EST
定制格式化
:
的格式在大多下表良好,但是也可以使用 SimpleDateFormat 自己的格式。使用 SimpleDateFormat 非常简单

·
使用一格式模式字符串(和一,如果希望的来实例化 SimpleDateFormat
 
·
使用 Date 在其上 format()
 
果是一格式化了的日期字符串。以下是一例子:

Date aDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
String formattedDate = formatter.format(today);
System.out.println(formattedDate);

码时将获得以下果(然,它将响运行代码时前日期):

11/05/2005
在上述例子中,用引括起的字符串遵循了日期格式化模式的模式规则Java.sun.com 中有一些那些规则的很好括(请参阅 料)。以下是一些有用的经验可以指定日期和时间的模式。

·
一些模式不是由直得到的(例如,mm 了一个两的分模式;要简写的月,可以使用 MM)。

·
过将文本文字放入中可以在模式中包含



久久不醉