day15--Java常用類之日期相關類

語言: CN / TW / HK

Java常用類

3.日期相關類

3.1Date類

在標準Java類庫中包含一個Date類,它的物件表示一個特定的瞬間,精確到毫秒。在網上商城下單時,在對報銷單進行稽核時,都需要獲取當前的時間,通過Date類就可以完成。

例子:Date類的使用

package li.normalclass.date;

import java.util.Date;

public class TestDate {
    public static void main(String[] args) {
        //獲取當前的時間 格式為 yyyyMMddhhmmss
        Date date = new Date();//相當於new Date(System.currentTimeMillis())
        //操作當前的時間
        System.out.println(date.toString());//Sat Aug 06 19:15:28 CST 2022
        System.out.println(date.toLocaleString());//2022-8-6 19:16:06
        System.out.println(System.currentTimeMillis());//計算從1970年1月1日 0:00:00到目前為止的毫秒數
        System.out.println(date.getYear());//122  =2022-1900
        System.out.println(date.getMonth());//7   0-11   現在是八月
        System.out.println(date.getDate());//6 日
        System.out.println(date.getDay());//6   當前為星期六   注:星期日為0
        System.out.println(date.getHours());//19    當前為19點
        System.out.println(date.getMinutes());//26  當前為26分
        System.out.println(date.getSeconds());//16  當前為16秒
        System.out.println(date.getTime());//1659785176358  計算從1970年1月1日 0:00:00到目前為止的毫秒數

        //獲取當前的時間 格式為 yyyyMMdd
        java.sql.Date sdate = new java.sql.Date(System.currentTimeMillis());
        System.out.println(sdate.toString());//2022-08-06

        java.sql.Date sdate2 = java.sql.Date.valueOf("1896-9-10");
        System.out.println(sdate2.toString());//1896-09-10

    }
}

檢視API文件大家可以看到其實Date類中的很多方法已經過時了。JDK1.1之前的Date包含了日期操作、字串轉化為物件等操作。經過JDK1.1之後,日期操作類一般使用Calendar類,而字串的轉化 使用DateFormat類。

3.2DateFormat類

Format:格式

DateFormat是一個抽象類,一般使用它的子類SimpleDateFormat類來實現。主要作用就是把時間物件轉化為指定格式的字串。反之,就是把指定格式的字串轉化為時間物件。

字串----->日期

日期----->字串

例子:

package li.normalclass.date;

import java.text.*;
import java.util.Date;

/**
 * 主要操作:
 *   DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定識別的格式
 *
 *   Date date = sdf.parse(strdate);//將字串轉換成日期
 *
 *   String strdate2 = sdf.format(date);//將日期轉換成字串
 */
public class TestDateFormat {
    public static void main(String[] args) throws ParseException {
        String strdate = "1999-12-23 12:12:12";//字串

        //String---->Date
        //DateFormat是抽象類,要例項化只能引用它的子類SimpleDateFormat
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定識別的格式
        Date date = sdf.parse(strdate);//將字串轉換成日期

        String strdate2 = sdf.format(date);//將日期轉換成字串
        System.out.println(strdate2);
        
    }
}

3.3Calendar類

Calendar:日曆

例子:

package li.normalclass.date;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class TestCalendar {
    public static void main(String[] args) {
        //獲取當前的時間
        Calendar cal = new GregorianCalendar();
        // 輸出當前的時間
        System.out.println(cal);
        //java.util.GregorianCalendar[time=1659791839017,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=218,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=17,SECOND=19,MILLISECOND=17,ZONE_OFFSET=28800000,DST_OFFSET=0]

        System.out.println(cal.get(Calendar.YEAR));//2022
        System.out.println(cal.get(Calendar.MONTH));//7   0~11  7代表8月
        System.out.println(cal.get(Calendar.DATE));//6   代表6號
        System.out.println(cal.get(Calendar.DAY_OF_WEEK));//7  代表週六  從週日為1開始計算一週

        //改變時間
        cal.set(Calendar.DATE,1);//直接指定日期  1號
        cal.set(Calendar.MONTH,1);//直接指定月數  2月
        cal.add(Calendar.DATE,2);//在設定的日期上再加上兩天
        System.out.println(cal.get(Calendar.YEAR));//2022 --  22年
        System.out.println(cal.get(Calendar.MONTH));//1 --  2月
        System.out.println(cal.get(Calendar.DATE));//3 --  3號
        System.out.println(cal.get(Calendar.DAY_OF_WEEK));//5 -- 週四
        System.out.println(cal.getActualMaximum(Calendar.DATE));//28 -- 指定月一共有多少天
    }

}