1. 程式人生 > 實用技巧 >Day12_常用類

Day12_常用類

Day12_常用類

Date類

java.sql.Date:表示到年月日

java.util.Date:表示到年月日時分秒

import java.util.Date;

public class Demo03 {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d.getTime());
        System.out.println(System.currentTimeMillis());//常用,原因:不用建立物件,直接呼叫
        //通過時間戳直接初始化java.sql.Date物件
        java.sql.Date sqlDate= new java.sql.Date(1596611974007L);
        System.out.println(sqlDate);
        //String----->java.sql.Date
        java.sql.Date valueOf = java.sql.Date.valueOf("2020-8-5");
        System.out.println(valueOf);

        //java.util.Date----->java.sql.Date
        java.sql.Date sqlDate2=new java.sql.Date(new Date().getTime());

        //java.sql.Date----->java.util.Date
        Date date = sqlDate2;//java.sql.Date類是java.util.Date的子類。子類直接轉化成父類

        //java.sql包下的類:
        java.sql.Time time=new java.sql.Time(1596611974007L);
        System.out.println(time.toGMTString());//toGMTString()已過時,實際程式設計中不建議用
        //時間戳更精確
        java.sql.Timestamp ts = new java.sql.Timestamp(1596611974007L);
        System.out.println(ts);


    }
}

輸出:

1596612952197
1596612952197
2020-08-05
2020-08-05
5 Aug 2020 07:19:34 GMT
2020-08-05 15:19:34.007

String類與Date類的相互轉化

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

public class Demo04 {
    public static void main(String[] args) {
        //日期格式類,DateFormat類是抽象類,不能直接建立物件,建立他的實
      用類
        DateFormat df= new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
        try {
            //String--->Date
            Date d = df.parse("2020-8-5 15-53-56");
            System.out.println(d);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //Date--->String
        String str=df.format(new Date());
        System.out.println(str);
    }
}

輸出:

Wed Aug 05 15:53:56 CST 2020
2020-08-05 03-57-05

Calendar類

Calendar類很強大,但是用的少!

import java.util.Calendar;
import java.util.Date;

public class Demo05 {
    public static void main(String[] args) {
        //Calendar類是抽象類,通過呼叫其方法來獲取例項
        Calendar cal=Calendar.getInstance();
        //查詢
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.MONTH));
        System.out.println(cal.get(Calendar.YEAR));
        //設定
        cal.set(Calendar.YEAR,2050);
        System.out.println(cal.get(Calendar.YEAR));

        //String--->Calendar
        //String--->Date
        String str="2050-2-5";
        Date valueOf=java.sql.Date.valueOf(str);
        //Date--->Calendar
        cal.setTime(valueOf);
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));
        System.out.println(cal.get(Calendar.DATE));
    }
}

輸出:

//當前日期:2020-8-5
5
7//月份從0開始計算
2020
2050
2050
1//月份從0開始計算
5

可以查詢日期的日曆(小練習)

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class calendar {
    public static void main(String[] args) {
        System.out.print("請輸入您想要檢視的日期--(格式例如:2020-8-5):");
        Scanner sc = new Scanner(System.in);
        String str=sc.next();

        //String--->Calendar
        Date valueOf= java.sql.Date.valueOf(str);
        Calendar cal= new GregorianCalendar();
        cal.setTime(valueOf);
        //輸出日曆頭
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        //獲取該月的天數
        int maxDay=cal.getActualMaximum(Calendar.DATE);
        //獲取輸入的天數
        int today=cal.get(Calendar.DATE);
        //將cal物件設定為該月的第一天
        cal.set(Calendar.DATE,1);
        //獲取該月第一天是星期幾
        int dayOfWeek= cal.get(Calendar.DAY_OF_WEEK);
        //在第一天前輸出空格
        for (int i = 0; i < dayOfWeek-1; i++) {
            System.out.print("\t");
        }
        //計算輸出的天數,以便按星期換行
        int count=0;
        count=count+dayOfWeek-1;
        for (int i = 0; i < maxDay; i++) {
            if(i!=today-1) {
                System.out.print(i + 1 + "\t");
                count++;
            }else{
                //標記輸入的日期
                System.out.print(i + 1 + "*\t");
                count++;
            }
            //換行
            if(count%7==0){
                System.out.println();
            }
        }
    }
}

輸出:(查詢2030-3-4,由於markdown的編輯,出現亂碼)

請輸入您想要檢視的日期--(格式例如:2020-8-5):2030-3-4
日	一	二	三	四	五	六
					1	2	
3	4*	5	6	7	8	9	
10	11	12	13	14	15	16	
17	18	19	20	21	22	23	
24	25	26	27	28	29	30	
31	

列舉

列舉與switch結合應用:

  1. switch()放: int char byte String 列舉
  2. case後面只能是列舉下的例項
  3. 什麼情況下使用列舉?值固定的時候

不能建立物件的四種情況:

  1. 是介面

  2. 抽象類

  3. 沒有空構造器

  4. 構造器的用private修飾,只能在本類中建立

    此時可以通過類名.方法名,類名.屬性名來訪問方法和屬性