System.currentTimeMillis() :計算從1970/1/1 0點0分0秒至現在的毫秒數,常用來計算時間差
JDK8以前的兩個Date相關的類,分別又有繼承的關係
java.util.Date :superclass
java.sql.Date :sub class
java.util.Date :
import java.util.Date
Date date1 = new Date(); // 基於當前系統時間實例化
// 基於某個long類型的值去進行實例化,會計算是在1970/1/1 0點0分0秒後經過的時間
Date date2 = new Date(1223129481L);
System.out.println(date1.toString()); // Thur Oct 24 22:15:30 CST 2024
long milliTimes = date1.getTime();
System.out.println(milliTimes);
// 1234742687L 返回一個從1970/1/1 0點0分0秒到現在毫秒數(數字我是亂打的)
java.util.Date 中有許多方法、構造器都已經是Deprecated(過時) 了
假設今天import不同package 中,相同名稱的class 時,要使用以下方法(舉例已經使用java.util.Date 了,但是現在要在同一個地方使用java.sql.Date)
java.sql.Date :
import java.util.Date
java.sql.Date date1 = new java.sql.Date(1370202256045L); // 這個類需要在構造器中傳入一個毫秒
System.out.println(date1.toString()); // 2013-06-03
SimpleDateFormat :主要用於將日期時間格式化或是將字串解析為日期,這個類在java.text 裡
import java.text.SimpleDateFormat
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
Date date1 = new Date();
System.out.println(simpleDateFormat.formate(date1)); // 24-10-24 下午10:31
// 沒有使用構造器時,使用parse()方法就只能解析預設格式的字串: 24-10-24 下午10:31
System.out.println(simpleDateFormat.parse("24-10-24 下午10:31")); // Thur Oct 24 22:15:30 CST 2024
// 可以透過不同的字串參數,去改變SimpleDateFormat構造器的格式
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat1.formate(date1));// 2024-10-24 22:31:30
// 有使用構造器去改變顯示日期時間格式時,解析字串就只能使用改變後的格式
System.out.println(simpleDateFormat1.parse("2024-10-24 22:31:30"));
Calendar 類:前面提到Date 很多中很多構造器、方法等都已經Deprected ,有很大一部份是被Calendar 所取代,而Calendar 本身是一個抽象類 ,可以透過它的subclass GregorianCalendar 去進行實例化,或者使用靜態方法getInstance() 去取得GregorianCalendar 的實例
import java.util.Calendar
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass()); // class java.util.GregorianCalendar
Calendar 中有幾個常用的方法
get(int field) → calendar.get(Calendar.DAY_OF_MONTH) :獲取今天是這個月的第幾天set(int field, xx) →calendar.set(Calendar.DAY_OF_MONTH, xx) :將DAY_OF_MONTH 這個靜態屬性設置為xx 天add(int field, xx) →calendar.add(Calendar.DAY_OF_MONTH, xx) :將DAY_OF_MONTH 這個靜態屬性設置的天數增加xx 天,若要減少天數則直接輸入負數getTime() →Date date = calendar.getTime(); 將calendar 實例轉換成一個Date 的物件setTime() →Date date = new Date(); calendar.setTime(date); 可以將目前calendar 的日期時間設置為傳入的Date 的日期時間