1. 程式人生 > WINDOWS開發 >JDK 8之前日期時間API

JDK 8之前日期時間API

1.獲取系統當前時間:System類中的currentTimeMillis()

long time = System.currentTimeMillis();
//返回當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差。
//稱為時間戳
System.out.println(time);

2. java.util.Date類與java.sql.Date類

/*
    java.util.Date類
           |---java.sql.Date類

    1.兩個構造器的使用
        >構造器一:Date():建立一個對應當前時間的Date物件
        >構造器二:建立指定毫秒數的Date物件
    2.兩個方法的使用
        >toString():顯示當前的年、月、日、時、分、秒
        >getTime():獲取當前Date物件對應的毫秒數。(時間戳)

    3. java.sql.Date對應著資料庫中的日期型別的變數
        >如何例項化
        >如何將java.util.Date物件轉換為java.sql.Date物件
     */
    @Test
    public void test2(){
        //構造器一:Date():建立一個對應當前時間的Date物件
        Date date1 = new Date();
        System.out.println(date1.toString());//Sat Feb 16 16:35:31 GMT+08:00 2019

        System.out.println(date1.getTime());//1550306204104

        //構造器二:建立指定毫秒數的Date物件
        Date date2 = new Date(155030620410L);
        System.out.println(date2.toString());

        //建立java.sql.Date物件
        java.sql.Date date3 = new java.sql.Date(35235325345L);
        System.out.println(date3);//1971-02-13

        //如何將java.util.Date物件轉換為java.sql.Date物件
        //情況一:
//        Date date4 = new java.sql.Date(2343243242323L);
//        java.sql.Date date5 = (java.sql.Date) date4;
        //情況二:
        Date date6 = new Date();
        java.sql.Date date7 = new java.sql.Date(date6.getTime());


    }

3. java.text.SimpleDataFormat類

SimpleDateFormat對日期Date類的格式化和解析
1.兩個操作:
1.1 格式化:日期 --->字串
1.2 解析:格式化的逆過程,字串 ---> 日期

2.SimpleDateFormat的例項化:new + 構造器


//*************照指定的方式格式化和解析:呼叫帶參的構造器*****************
//        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = sdf1.format(date);
        System.out.println(format1);//2019-02-18 11:48:27
        //解析:要求字串必須是符合SimpleDateFormat識別的格式(通過構造器引數體現),//否則,拋異常
        Date date2 = sdf1.parse("2020-02-18 11:48:27");
        System.out.println(date2);

小練習:

/*
    練習一:字串"2020-09-08"轉換為java.sql.Date

    練習二:"天打漁兩天晒網"   1990-01-01  xxxx-xx-xx 打漁?晒網?

    舉例:2020-09-08 ? 總天數

    總天數 % 5 == 1,2,3 : 打漁
    總天數 % 5 == 4,0 : 晒網

    總天數的計算?
    方式一:( date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24) + 1
    方式二:1990-01-01  --> 2019-12-31  +  2020-01-01 -->2020-09-08
     */
    @Test
    public void testExer() throws ParseException {
        String birth = "2020-09-08";

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse(birth);
//        System.out.println(date);

        java.sql.Date birthDate = new java.sql.Date(date.getTime());
        System.out.println(birthDate);
    }

4.Calendar類:日曆類、抽象類

		//1.例項化
        //方式一:建立其子類(GregorianCalendar的物件
        //方式二:呼叫其靜態方法getInstance()
        Calendar calendar = Calendar.getInstance();
//        System.out.println(calendar.getClass());

        //2.常用方法
        //get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));

        //set()
        //calendar可變性
         calendar.set(Calendar.DAY_OF_MONTH,22);
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);

        //add()
        calendar.add(Calendar.DAY_OF_MONTH,-3);
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);

        //getTime():日曆類---> Date
        Date date = calendar.getTime();
        System.out.println(date);

        //setTime():Date ---> 日曆類
        Date date1 = new Date();
        calendar.setTime(date1);
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);