日期處理類
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天的...)