Date類
Date類封裝了當期時間和日期。與Java1.0定義的原始版的Date類相比,Date類發生了本質的變化。在Java1.1釋出時,原始版Date類定義的許多功能被移進Calendar類和DateFormat類中。原始版Date類中的許多方法已經不贊成使用。
Date類支援的建構函式:
Date()
Date(long millisec)
第一個建構函式使用當前日期和時間初始化物件。第二個建構函式接收一個引數,該引數等於自1970年1月1日午夜以來經歷的毫秒數。
Date物件建立以後,可以呼叫下面的方法。
序號 | 方法和描述 |
---|---|
1 | boolean after(Date date) 若當呼叫此方法的Date物件在指定日期之後返回true,否則返回false。 |
2 | boolean before(Date date) 若當呼叫此方法的Date物件在指定日期之前返回true,否則返回false。 |
3 | Object clone( ) 返回此物件的副本。 |
4 | int compareTo(Date date) 比較當呼叫此方法的Date物件和指定日期。兩者相等時候返回0。呼叫物件在指定日期之前則返回負數。呼叫物件在指定日期之後則返回正數。 |
5 | int compareTo(Object obj) 若obj是Date型別則操作等同於compareTo(Date) 。否則它丟擲ClassCastException。 |
6 | boolean equals(Object date) 當呼叫此方法的Date物件和指定日期相等時候返回true,否則返回false。 |
7 | long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 物件表示的毫秒數。 |
8 | int hashCode( ) 返回此物件的雜湊碼值。 |
9 | void setTime(long time) 用自1970年1月1日00:00:00 GMT以後time毫秒數設定時間和日期。 |
10 | String toString( ) 轉換Date物件為String表示形式,並返回該字串。 |
日期比較
Java使用以下三種方法來比較兩個日期:
- 使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然後比較這兩個值。
- 使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
- 使用 compareTo() 方法,它是由 Comparable 介面定義的,Date 類實現了這個介面。
使用 SimpleDateFormat 格式化日期
SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何使用者自定義日期時間格式來執行。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Calendartest {
public static void main(String[] args) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
System.out.println(ft.format(d));
}
日期和時間的格式化編碼
時間模式字串用來指定時間格式。在此模式中,所有的 ASCII 字母被保留為模式字母,定義如下:
字母 | 描述 | 示例 |
---|---|---|
G | 紀元標記 | AD |
y | 四位年份 | 2001 |
M | 月份 | July or 07 |
d | 一個月的日期 | 10 |
h | A.M./P.M. (1~12)格式小時 | 12 |
H | 一天中的小時 (0~23) | 22 |
m | 分鐘數 | 30 |
s | 秒數 | 55 |
S | 毫秒數 | 234 |
E | 星期幾 | Tuesday |
D | 一年中的日子 | 360 |
F | 一個月中第幾周的周幾 | 2 (second Wed. in July) |
w | 一年中第幾周 | 40 |
W | 一個月中第幾周 | 1 |
a | A.M./P.M. 標記 | PM |
k | 一天中的小時(1~24) | 24 |
K | A.M./P.M. (0~11)格式小時 | 10 |
z | 時區 | Eastern Standard Time |
' | 文字定界符 | Delimiter |
" | 單引號 |
Calendar類
Calendar抽象類提供一套方法,允許將毫秒數形式的時間轉化成大量有用的時間組成部分。例如年、月、日、小時、分和秒。Calendar類沒有提供公有的建構函式,Calendar類的功能要比Date類強大很多,而且在實現方式上也比Date類要複雜一些。Calendar類是一個抽象類,在實際使用時實現特定的子類的物件,建立物件的過程對程式設計師來說是透明的,只需要使用getInstance方法建立即可。
建立一個代表系統當前日期的Calendar物件
Calendar c = Calendar.getInstance();//預設是當前日期
建立一個指定日期的Calendar物件
使用Calendar類代表特定的時間,需要首先建立一個Calendar的物件,然後再設定該物件中的年月日引數來完成。
//建立一個代表2009年6月12日的Calendar物件
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
Calendar類物件欄位型別
Calendar類中用一下這些常量表示不同的意義,jdk內的很多類其實都是採用的這種思想
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的欄位意義完全相同 |
Calendar.HOUR | 12小時制的小時 |
Calendar.HOUR_OF_DAY | 24小時制的小時 |
Calendar.MINUTE | 分鐘 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期幾 |
Calendar類物件資訊的獲得