1. 程式人生 > 實用技巧 >Java--Date、Calendar、SimpleDateFormat、System類

Java--Date、Calendar、SimpleDateFormat、System類

一、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("程式退出了。。。");//上一句執行了退出,所以之後的程式碼都不會執行
    }
}