Date和Calendar是JAVA類庫裡提供對時間進行處理的類,由於日期在商業邏輯的應用中占據著很重要的地位,所以在這裡想對這兩個類進行一個基本的講解,由於技術有限,不到之處請指正。
Date類顧名思義,一看就知道是和日期有關的類了,這個類最主要的作用就是獲得當前時間了,然而這個類裡面也具有設置時間以及一些其他的功能,可是由於本身設計的問題,這些方法卻遭到眾多批評,而這些遭受批評的功能都已移植到另外一個類裡面,這就是今天要講到的第二個類Calendar裡面。
在講兩個類之前,這裡又不能不多提一個類,那就是DateFormat類,這個類是用來格式化日期的,稍後也會講到。
首先,讓我們來看一個獲取當前時間的例子:
Date date = new Date();
System.out.println(date.getTime());
由於本人比較懶,就寫一些主要的語句就行了,上面的語句首先創建了Date的一個對象,接著使用getTime方法獲得當前的時間,但是注意了,輸出後的結果確實一串長整型的數字,這是為什麼?實際上這是系統根據當前時間計算出來的一個long型的數,至於是如何計算出來的就不在本文中講述了,那既然這樣的話又如何顯示正確的時間呢?這就要利用到上面的DateFormat類了,這個類是一個基類,它有一個子類是SimpleDateFormat,具體用法請看下面的代碼:
Date date = new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
System.out.println(dateFm.format(date));
這段代碼開始創建了一個Date的對象,用來獲取當前時間,而重點就在於後面的SimpleDateFormat對象,這個對繼承了DateFormat,利用format方法對Date對象進行格式化,然後輸出,而格式的定制是由用戶定制的,EEEE代表星期,MMMM代表月份,而dd代表日,yyyy代表年。使用這個方法就可以根據用戶自定義的格式進行輸出時間。
上面介紹了由用戶自定義格式的輸出時間,下面將來介紹通過JAVA類庫提供的標准格式輸出時間,這就要用到DateFormat類了,請看以下代碼:
Date date = new Date();
DateFormat dateFm = DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.SHORT);
System.out.println(dateFm.format(date));
這裡使用的方法和用戶自定義的方法差不多,只是這裡使用的是一個抽象類,由於DateFormat是一個抽象類,所以它不能通過構造函數構造對象,在這裡是通過getDateTimeInstance()方法獲得該對象,而所傳遞的參數就是DateFormat裡面定義的一些常量,系統根據這些常量輸出當前時間,由於這裡使用的是getDateTimeInstance方法,所以將傳遞兩個常量參數,用來分別格式化日期和當前的時間。
上面講述了如何獲得系統時間以及如何格式化輸出,那如果想獲取或者設置時間當中的某一部分又該如何呢?例如年,月,日。這就要靠Calendar這個類了,這個類也是一個抽象類,它有一個子類GregorianCalendar,接下來我會利用這個子類來演示這個過程,請看以下代碼:
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(new Date());
System.out.println("System Date: " + dateFormat.format(cal.getTime()));
cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday: " +
dateFormat.format(cal.getTime()));
這段代碼當中,首先創建了一個DateFormat對象進行格式設置,接著創建了一個GregorianCalendar對象cal,接著使用cal.setTime()方法設置cal對象中的時間為當前時間,然後通過format格式化由cal.getTime()返回的時間進行輸出,後面利用set方法設置cal的日期為當前星期的FRIDAY,此時cal中存儲的時間就是這個星期五的該時刻,而後面利用format格式化輸出,假如當前時間為2005年1月27日星期4的11點30分,那麼最後將那句將會輸出2005年1月28日星期5的11點30分。
以上對Date和Calendar類的應用做了個大概的講述,比較粗略,都是比較基礎的,希望高手們講解點其他的高級用途,謝謝。