Java--Date、Calendar、SimpleDateFormat、System類
阿新 • • 發佈:2020-09-10
一、Date
- Date表示特定的瞬間,精確到毫秒
- Date類中的大部分方法都已經被Calendar類中的方法所取代
- 時間單位
- 1秒 = 1000毫秒
- 1毫秒 = 1000微妙
- 1微妙 = 1000納秒
package com.monv.str; import java.util.Date; public class TestDate { public static void main(String[] args) { //1.建立Date物件 //今天 無餐構造表示預設的日期 Date date1 =new Date();//用util包中的Date System.out.println(date1.toString());//結果不是我們常用的格式 System.out.println(date1.toLocaleString());//這個方法已經過時了 //昨天 帶參構造Date(long date);表示1970.1.1以來的毫秒數 Date date2 = new Date(date1.getTime()-(60*60*24*1000)); System.out.println(date2.toLocaleString()); //2.方法 after before boolean b1 = date1.after(date2); System.out.println(b1);boolean b2 = date1.before(date2); System.out.println(b2); //比較compareTo(); 比較毫秒值 int d1 = date1.compareTo(date2); System.out.println(d1); //比較是否相等 equals() boolean b3 = date1.equals(date2); System.out.println(b3); } }-------------------------------- Thu Sep 10 14:06:22 CST 2020 2020-9-10 14:06:22 2020-9-9 14:06:22 true false 1 false
二、Calender
- Calender提供了獲取或設定各種日曆欄位的方法
- protected Calendar()構造方法為protected修飾,無法直接建立該物件
- 其他方法(如下圖)
package com.monv.str; import java.util.Calendar; public class TestCalender { public static void main(String[] args) { //建立Calender物件 Calendar calender = Calendar.getInstance();//因為是被保護的 不能建立物件 所以用Calendar的getInstance()靜態方法建立 System.out.println(calender.getTime().toLocaleString());//2020-9-10 17:54:01 System.out.println(calender.getTimeInMillis());//1599731641181 返回毫秒數(1970年到現在) //2.獲取時間資訊 //獲取年 int year = calender.get(calender.YEAR); //月 返回值是從0-11 int month = calender.get(calender.MONTH); //日 int day = calender.get(calender.DAY_OF_MONTH);//Date 或 DAY_OF_MONTH都可以 //小時 int hour = calender.get(calender.HOUR_OF_DAY);//HOUR 12小時 HOUR_OF_DAY 24小時 //分鐘 int minute = calender.get(calender.MINUTE); //秒 int second = calender.get(calender.SECOND); //列印 System.out.println(year+"年"+(month+1)+"月"+" "+day+"日"+hour+":"+minute+":"+second);//2020年9月 10日17:55:11 //3.修改時間 Calendar calender2 = calender.getInstance(); calender2.set(calender.DAY_OF_MONTH,9);//指定到某一天 9指定到9號 System.out.println(calender2.getTime().toLocaleString());//2020-9-9 17:55:11 //4.add修改時間 //增一個小時 (正:增加小時,負:減少小時) calender2.add(calender2.HOUR, 1); System.out.println(calender2.getTime().toLocaleString());//2020-9-9 18:55:11(增加1個小時) //5.補充方法 獲取月的最大日期和最小日期 int max = calender2.getActualMaximum(calender.DAY_OF_MONTH); int min = calender2.getActualMinimum(calender.DAY_OF_MONTH); System.out.println("最大日期"+max);//最大日期30 System.out.println("最小日期"+min);//最小日期1 } }
三、SimpleDateFormat
- SimpleDateFormat是以與語言環境有關的方式來格式化和解析日期的類
- 進行格式化(日期-->文字)、解析(文字-->日期)
- 常用的時間模式字母
package com.monv.chapter; import java.text.SimpleDateFormat; import java.util.Date; public class Demo3 { public static void main(String[] args) throws Exception{ //1.建立SimpleDateFormat物件 y:年 M:月 d:日 H:時 m:分 s:秒 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//格式化的形式 //2.建立Date Date d1 = new Date(); //3.格式化日期 把d1轉換為字串 String str1 = sdf1.format(d1); System.out.println(str1); //4.解析 把字串轉換為日期 String str2 = "1990/9/20 10:10:20";//注意:字串的格式要與 sdf1的格式一致 否則會報錯 Date d2 = sdf1.parse(str2); System.out.println(d2.toLocaleString()); } }
四、System類
- System系統類,主要用於獲取系統的屬性資料和其他操作,構造方法是私有的。在用的時候不需要建立物件,直接用system.就可以了
package com.monv.chapter; public class Demo4 { public static void main(String[] args) { //1.arraycopy() 複製陣列 //引數說明:src:源資料,srcPos:從源陣列哪個位置開始 //dest:目標陣列,destPos:從目標陣列的哪個位置開始放 length:複製的長度 int[] arr1 = {10,23,25,69,48,74}; int[] arr2 = new int[6]; System.arraycopy(arr1, 0, arr2, 0,arr1.length); for (int i = 0;i<arr2.length;i++) { System.out.println(arr2[i]); } //2.currentTimeMillis();獲取1970/1/1距今的毫秒值 可以用來計時 long start = System.currentTimeMillis();//記下開始時間 //來寫一個迴圈 for (int i = 0 ;i<99999;i++) { for (int j = 0;j<99999;j++) { int k = i+j; } } long end = System.currentTimeMillis();//記下結束時間 System.out.println("用時:"+(end-start));//結束時間-開始時間 = 用時 //3.gc();通知垃圾回收器回收垃圾 Student s1 = new Student("aaa",20);//被用著 沒有回收 Student s2 = new Student("bbb", 21);//被用著 沒有回收 new Student("ccc", 22);//回收了 new Student("ddd", 23);//回收了 System.gc(); //4.exit();退出jvm 0 正常退出,非0,異常退出 System.exit(0); System.out.println("程式退出了。。。");//上一句執行了退出,所以之後的程式碼都不會執行 } }