Date類:
Date類實際上隻是一個包裹類, 它包含的是一個長整型資料, 表示的是從GMT(格林尼治标準時間)1970年, 1月1日00:00:00這一刻之前或者是之後經曆的毫秒數。
Date類常用的兩個構造函數:
Date()無參數的構造函數建立的對象可以擷取本地目前時間。
Date(long time)使用一個從GMT(格林尼治标準時間)1970年, 1月1日00:00:00這一刻之前或者是之後經曆的毫秒數建立一個Date對象
Date示例:
Date date = new Date();
System.out.println(date.getTime()); //1228061164796
System.out.println(date.toString()); //Mon Dec 01 00:06:04 CST 2008
日期資料的定制格式:(DateFormat類、SimpleDateFormat類)
為了定制日期資料的輸出格式,我們可以使用DateFormat的子類SimpleDateFormat。SimpleDateFormat有個常用構造方法:
public SimpleDateFormat(String pattern) //pattern指定輸出格式
pattern中可以有如下格式符:
y,yy:用2位數字表示的"年"替換。
yyyy:用4位數字表示的"年"替換。
M,MM:用2位數字表示的"月"替換。
MMM:用漢字表示的"月"替換。
d,dd:用2位數字表示的"日"替換。
H,HH:用2位數字表示的"時"替換。
m,mm:用2位數字表示的"分"替換。
s,ss:用2位數字表示的"秒"替換。
E:用"星期"替換
pattern中的普通ASCII字元,必須用單引号“'”字元括起來,如:
pattern="'time':yyyy-MM-dd";
用SimpleDateFormat對象調用如下方法可以定制某時間輸出格式:
public String format(Date date)
執行個體:
SimpleDateFormat sdf = new SimpleDateFormat(" 'time':yyyy-MM-dd");
System.out.println(sdf.format(date)); // time:2008-12-01
假如我們由一個文本字元串包含一個格式化了的日期對象,現在從這個字元串中解析日期資料建立一個日期對象。
使用SimpleDateFormat對象調用如下函數建立一個Date對象:
Date java.text.DateFormat.parse(String source)
String str="2008-12-1";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try{
Date date=sdf.parse(str);
System.out.println(date); //Mon Dec 01 00:00:00 CST 2008
}
catch(Exception ex){
System.out.println(ex.getMessage());
使用标準的日期格式化過程:
常用的兩個擷取日期/時間格式器的方法:
public static final DateFormat getDateTimeInstance() //具有預設語言環境的預設格式化風格。
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) //具有預設語言環境的給定日期和時間格式化風格。
DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(shortDateFormat.format(date)); //08-12-1 下午1:28
System.out.println(mediumDateFormat.format(date)); //2008-12-1 13:28:31
System.out.println(longDateFormat.format(date)); //2008年12月1日 下午01時28分31秒
System.out.println(fullDateFormat.format(date)); //2008年12月1日 星期一 下午01時28分31秒 CST
Calendar類:
使用Date類可以建立日期/時間對象,使用DateFormat類,SimpleDateFormat類可以對Date對象進行格式化。
使用Calendar類可以設定和擷取日期/時間資料的特定部分。
Calendar類是抽象類不能執行個體化對象,但是可以使用Calendar類的static方法getInstance(),可以初始化一個月曆對象。如:
Calendar calendar = Calendar.getInstance();
然後可以使用該calendar對象可以調用方法,如:(當year取負數時表示公元前)
public final void set(int year, int month, int date)
public final void set(int year, int month, int date, int hourOfDay, int minute)
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
Calendar類對象調用如下方法可以擷取有關年份,月份,小時,星期等資訊,參數field的有效值由Calendar的靜态常量指定
public int get(int field)
calendar.get(Calendar.MONTH); //傳回一個整數,如果該整數是0表示一月,11表示12月
Calendar對象調用如下方法可以把時間表示為毫秒:
public long getTimeInMillis()
Calendar使用執行個體:
calendar.setTime(new Date());
String 年 = String.valueOf(calendar.get(YEAR)),
月 = String.valueOf(calendar.get(MONTH)+1),
日 = String.valueOf(calendar.get(DAY_OF_MONTH)),
星期 = String.valueOf(calendar.get(DAY_OF_WEEK)-1);
int hour = calendar.get(HOUR_OF_DAY),
minute = calendar.get(MINUTE),
second = calendar.get(SECOND);
System.out.println("現在的時間是:");
System.out.println(年+"年"+月+"月"+日+"日"+"星期"+星期);
System.out.println(hour+"時"+minute+"分"+second+"秒");
calendar.set(2004,7,8); //将月曆翻到2004年8月8日,注意7表示八月
long time2004 = calendar.getTimeInMillis();
calendar.set(2008,7,8); //将月曆翻到2008年8月8日
long time2008 = calendar.getTimeInMillis();
long 相隔天數 = (time2008-time2004)/(1000*60*60*24);
System.out.println("2008年8月8日和2004年8月8日相隔"+相隔天數+"天");
輸出結果:
現在的時間是:
2008年12月1日星期1
14時41分45秒
2008年8月8日和2004年8月8日相隔1461天