標籤:
在Java中可以使用Date類和Calendar類來處理日期
但是Date類很多方法都過時了,推薦使用Canlendar類來處理日期,並對日期的格式化做了介紹。下面的部分將會逐一介紹
Date類
Java提供了Date類來處理日期、時間,Date類既包含日期,也包含時間。Date類從JDK1.0版本就開始存在,存在時間久遠,提供的6個構造器中,已有4個建議放棄使用,目前使用的為:
- Date():產生一個以系統目前時間日期為準的Date對象。
- Date(long date):根據指定的long整型數來產生一個Date對象。
- boolean after(Date when):判斷日期是否在指定的日期when之後
- boolean before(Date when):判斷日期是否在指定的日期when之前。
- int compareTo(Date antherDate):比較兩個日期大小,後面時間大於前面時間返回-1,否則返回1.
- Boolean equals(Object obj):兩個時間表示同一時間是返回true
- long getTime():返回該對象對應long型整數
- void setTime(long time):設定該對象的時間。
public class DateTest { public static void main(String[] args) throws InterruptedException { long start = System.currentTimeMillis(); Date d1 = new Date(start); Thread.sleep(3000); long end = System.currentTimeMillis(); Date d2 = new Date(end); System.out.println(d1.before(d2)); System.out.println(d1.after(d2)); System.out.println(d1.getTime()); System.out.println(d1.equals(d2)); }}View Code
Calendar類
Calendar是一個抽象類別,用於表示日曆。因為Date類在設計上存在一些缺陷,所以Java提供Calendar類來更好的處理日期和時間。
Calendar類不能直接建立,可以通過類方法來建立一個Calendar的子類,Java本身提供了GregorianCalendar子類,通過getInstance()方法返回預設時區和語言環境獲得一個日曆。返回的執行個體就是Java提供的預設子類。
Calendar類提供的常用方法:
- void add(int field,int amount):根據日曆的規則,為給定的日曆欄位添加或減去指定的時間量。
- int get(int field):返回指定日曆欄位的值。
- int getActualMaximum(int field):返回指定日曆欄位的可能擁有的最大值。
- int getActualMinimum(int field):返回指定日曆欄位的可能擁有的最小值。
- void roll(int field,int amout):與add方法相似,區別在於超過該欄位的最大範圍時,也不會向上一個欄位進位。
- void set(int field,int value):將給定的日曆欄位設定為給定值。
- void set(int year,int month,int date):設定Calendar對象的年、月、日3個欄位值。
- void set(int year,int month,int date,int hourOfDay,int minute,int second):設定Calendar對象的年、月、日、時、分、秒6個欄位的值。
public class CalendarTest { public static void main(String[] args) { //通過類方法獲得執行個體 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.YEAR));// calendar.add(Calendar.DATE, 1);// System.out.println(calendar.get(calendar.DATE)); //roll的用法 (當超過範圍不會向上進位) calendar.roll(Calendar.MONTH,10 ); System.out.println(calendar.get(calendar.YEAR)); System.out.println(calendar.get(calendar.MONTH)); //擷取該欄位可能擁有的最大值 System.out.println(calendar.getMaximum(calendar.MONTH)); //自己設定時間 calendar.set(2016, 06, 8); System.out.println(calendar.get(calendar.YEAR)); //返回設定後的時間 //Date和Calendar類之間的轉換 Date date = calendar.getTime(); //使用SimpleDateFormat格式化輸出時間 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh點mm分ss秒"); System.out.println(sdf.format(date)); }}View Code
使用DateFormat格式化日期
DateFormat是一個抽象類別,它也提供了幾個Factory 方法用於擷取DateFormat對象。返回的都是DateFormat對象的子類執行個體,是同一個類型的執行個體。
雖然返回的都是同一個物件類型的執行個體,但是根據不同的Factory 方法,返回的對象在格式化時間對象時,處理不同部分的資訊。
- getDateInstance():返回一個日期格式器,只對日期進行格式化。
- getTimeInstance():返回一個時間格式器,只對時間進行格式化。
- getDateTimeInstance():返回一個日期、時間格式器,既對時間又對日期進行格式化。
- getInstance():返回一個預設的系統相關的日期、時間格式器。
public static void main(String[] args) throws Exception{ Date date = new Date(); //預設為中國常用格式 DateFormat format = DateFormat.getInstance(); System.out.println(format.format(date)); //返回日期、時間格式器國際統一標準 format = DateFormat.getDateTimeInstance(); System.out.println(format.format(date)); //返回日期格式器,同時指定格式類型,為簡潔型,指定要顯示哪個國家的類型 format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA); System.out.println(format.format(date)); //返回日期格式器,同時指定格式類型,為中等型,指定要顯示哪個國家的類型 format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA); System.out.println(format.format(date)); //返回日期格式器,同時指定格式類型,為完整型,指定要顯示哪個國家的類型 format = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); System.out.println(format.format(date)); //返回日期格式器,同時指定格式類型,為複雜型,指定要顯示哪個國家的類型 format = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA); System.out.println(format.format(date)); }View Code
使用SimpleDateFormat格式化日期
SimpleDateFormat是DateFormat的子類,是一種更簡單的日期格式,以為我們指定的格式對日期進行格式化。
注意使用的時候在new出對象的時候指定想要看到的日期格式即可。(具體代碼上面例子有)
Java中的日期處理類