1. 程式人生 > >java中的Date、Calendar的區別和聯絡

java中的Date、Calendar的區別和聯絡

在學習java時,總會對日期的用法感到迷惑、但日期又是個大商業公司必須的,所以就認真的學習了一下java中的有關時間和日曆的類。

1、Date(import java.util.Date)

截止到jdk1.7該類中已經有很多方法遭到棄用,剩餘的方法不多。

Date date = new Date();
System.out.println(date.toString()); //Thu Jun 19 15:16:05 CST 2014
long s = System.currentTimeMillis();
System.out.println(s); //1403162165781
System.out.println(date.getTime()); //1403162165781

s += 10000;
Date NewDate = new Date(s);
date.setTime(s);
System.out.println(date.toString());//Thu Jun 19 15:16:15 CST 2014
System.out.println(NewDate.toString());//Thu Jun 19 15:16:15 CST 2014

從上述程式碼可以看出,Date類的構造方法有兩種,無參構造和利用毫秒數構造。並且Date是可變類,可以利用setTime()方法,重新設定時間。

但從上述的Date的輸出看到,一般輸出的格式相對於國人來說是晦澀難懂的,所以sun公司提供了一種格式化類來定義自己想要的格式。

DateFomat 這是一個抽象類,我們一般用的都是其子類SimpleDateFomat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String str = sdf.format(date);
System.out.println(str);//2014-06-19 15:30:13

2、Calendar(import java.util.Calendar)

Calendar是一個抽象類,不能例項化,但其提供了了一個工廠方法

Calendar rightNow = Calendar.getInstance();

/**
* 根據當前系統地區建立Calendar例項
* 預設創建出來的Calendar描述的是當前系統時間
* java.util.Calendar
*/
Calendar calendar = Calendar.getInstance();

//System.out.println(calendar);
/**
* Date getTime()
* 以Date形式描述當前Calendar所描述的時間
*/
Date date = calendar.getTime();
/**
* void setTime(Date date)
* 讓當前Calendar描述給定的Date物件所描述的時間
*/
calendar.setTime(new Date());

System.out.println(date);

可以呼叫Calendar的getTime方法獲取Date類的時間。

//獲取當前的系統時間
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());//Thu Jun 19 16:28:54 CST 2014
//將當前的年份設定為2000年
//在Calendar中由常量YEAR代表年
calendar.set(Calendar.YEAR,2000);
System.out.println(calendar.getTime());//Mon Jun 19 16:28:54 CST 2000
//在Calendar中常量MONTH代表月,將月設定為5月
//0代表1月,在Calendar中由代表月份的常量
calendar.set(Calendar.MONTH, 4);
//calendar.set(Calendar.MONTH, Calendar.MAY);
System.out.println(calendar.getTime());//Fri May 19 16:28:54 CST 2000
/**
* 在Calendar中:
* DATE代表當月的一天
* DAY_OF_MONTH 也代表當月的天,與DATE完全一樣
* DAY_OF_WEEK代表星期中的一天
* DAY_OF_YEAR代表一年中的第幾天
* 將日期設定為當月的第五天
*/
calendar.set(Calendar.DATE,5);
System.out.println(calendar.getTime());//Fri May 05 16:28:54 CST 2000

//獲取現在的時間
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("現在是:" +year+ "年" +month+ "月" +day+ "日");//現在是:2000年5月5日
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("星期 " + (dayOfWeek == 1? "日" : dayOfWeek));//星期 6