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)。

·
過將文本文字放入中可以在模式中包含



久久不醉