Java學習總結:36(日期處理類)

日期處理類

Date類

Date類常用方法

No. 方法 類型 描述
1 public Date() 構造 實例化Date類對象
2 public Date(long date) 構造 將數字變爲Date類對象,long爲日期時間數據
3 public long getTime() 普通 將當前的日期時間變爲long型

例:取得當前的日期時間

package Project.Study.DateClass;

import java.util.Date;

public class Test1 {
    public static void main(String[]args){
        Date date=new Date();		//實例化Date對象
        System.out.println(date);	//輸出對象信息
    }
}
//結果:
//Wed Apr 01 20:09:49 CST 2020

大家可能都注意到了,上程序輸出的日期未格式化處理,看着十分變扭,日期的格式化需要用到SimpleDateFormat類,這個類我們等下會講到。

例:Date與long間的轉換

package Project.Study.DateClass;

import java.util.Date;

public class Test2 {
    public static void main(String[]args){
        long cur=System.currentTimeMillis();	//取得當前日期時間以long型返回
        Date date=new Date(cur);				//將long型轉化爲Date
        System.out.println(date);				//輸出對象信息
        System.out.println(date.getTime());
    }
}
//結果:
//Wed Apr 01 20:16:22 CST 2020
//1585743382666

日期格式化:SimpleDateFormat

No. 方法 類型 描述
1 public SimpleDateFormat(String pattern) 構造 傳入日期時間標記實例化對象
2 public final String format(Date date) 普通 將日期格式化爲字符串數據
3 public Date parse(String source) throws ParseException 普通 將字符串格式化爲日期數據

例:將日期格式化顯示(Date型數據變爲String型數據)

package Project.Study.SimpleDateFormatClass;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
    public static void main(String[]args){
        Date date=new Date();           //實例化Date類對象
        //實例化SimpleDateFormat類對象,同時定義好要轉換的目標字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str=sdf.format(date);    //將Date型變爲String型
        System.out.println(str);
    }
}
//結果:
//2020-04-01 23:57:56.166

注:yyyy-MM-dd HH:mm:ss.SSS分別對應(年-月-日 時:分:秒.毫秒),這些都是常用的時間標記。

例:將字符串轉換爲日期

package Project.Study.SimpleDateFormatClass;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test2 {
    public static void main(String[]args) throws ParseException {
        String str="2020-04-01 23:57:56.166";			//日期字符串
        //實例化SimpleDateFormat類對象,同時定義好了要轉換的字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date=sdf.parse(str);						//將字符串變爲日期型數據
        System.out.println(date);
    }
}
//結果:
//Wed Apr 01 23:57:56 CST 2020

SimpleDateFormat類其實有一個好處就是,它可以自動處理錯誤的日期時間數,例如:如果設置的月數是15,則自動增加一年,變爲3個月。

例:觀察SimpleDateFormat的自動糾正

package Project.Study.SimpleDateFormatClass;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test3 {
    public static void main(String[]args) throws ParseException {
        String str="2020-15-65 23:57:56.166";	//定義一個錯誤的日期字符串
        //實例化SimpleDateFormat類對象,同時定義好了要轉換的字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date=sdf.parse(str);				//將字符串變爲日期型數據
        System.out.println(date);
    }
}
//結果:
//Tue May 04 23:57:56 CST 2021

從上程序可以看到,雖然我們定義了一個錯誤的日期字符串,但SimpleDateFormat類自動進行了進位處理。

Calendar類

Calendar類中定義的常量和方法

No. 方法 類型 描述
1 public static final int YEAR 常量 取得年、int類型
2 public static final int MONTH 常量 取得月、int類型
3 public static final int DAY_OF_MONTH 常量 取得日、int類型
4 public static final int HOUR_OF_DAY 常量 取得小時(24小時制)、int類型
5 public static final int MINUTE 常量 取得分、int類型
6 public static final int SECOND 常量 取得秒、int類型
7 public static final int MILLISECOND 常量 取得毫秒、int類型
8 public static Calendar getInstance() 普通 根據默認的時區實例化對象
9 public boolean after(Object when) 普通 判斷一個日期是否在指定日期之後
10 public boolean before(Object when) 普通 判斷一個日期是否在指定日期之前
11 public int get(int field) 普通 返回給定日曆字段的值

例:取得當前的日期時間

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test1 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();	//取得本類對象
        StringBuffer buf=new StringBuffer();	//保存日期數據
        buf.append(cal.get(Calendar.YEAR)).append("-");			//取得年數據
        buf.append(cal.get(Calendar.MONTH)+1).append("-");		//取得月數據,從0開始
        buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");	//取得天數據
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");	//取得小時數據
        buf.append(cal.get(Calendar.MINUTE)).append(":");		//取得分鐘數據
        buf.append(cal.get(Calendar.SECOND));					//取得秒數據
        System.out.println(buf);
    }
}
//結果:
//2020-4-2 1:11:34

由上程序我們可以發現,Calendar類取得的內容不會前導0,即如果當前月份是4月,那麼返回的不是“04”,而是“4”。

注意:由於Calendar類的月是從0開始的,所以每一次在進行月份計算的時候都需要執行一個“+1”操作。

Calendar類還可以進行簡單的日期計算
例:取得五天後的日期

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test2 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();
        StringBuffer buf=new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH)+1).append("-");
        buf.append(cal.get(Calendar.DAY_OF_MONTH)+5).append(" ");
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}
//結果:
//2020-4-7 1:21:56

注意:Calendar類並沒有SimpleDateFormat類的自動進位功能。
例:錯誤示範

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test2 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();
        StringBuffer buf=new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH)+1).append("-");
        buf.append(cal.get(Calendar.DAY_OF_MONTH)+33).append(" ");
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}
//結果:
//2020-4-35 1:30:11(一個月不會有35天的...)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章