1. 程式人生 > >20-Date+Format+DateFormat+SimpleDateFormat+Calendar

20-Date+Format+DateFormat+SimpleDateFormat+Calendar

一、java.util.Date

1、年:y,月:0-11,日:1-31,時:0-23,分:0-59,秒:0-61(值60和61只對閏秒發生)

注:只有日是1-xx,其他都是0-xx

2、建構函式

(1)Date():分配Date物件並初始化此物件,以表示分配它的時間--當前時間(精確到毫秒) -- 常用

(2)Date(long date):分配Date物件並初始化此物件,以表示自從標準基準時間(1970年1月1日 00:00:00 GMT)以來的指定毫秒數

        long time = System.currentTimeMillis();    //獲取當前時間的毫秒值
        System.out.println(time);   //1527400740144
        Date date = new Date();
        System.out.println(date.toString());    //Sun May 27 13:59:00 CST 2018
        //等效於 Date date2 = new Date(1527400740144L);
        Date date2 = new Date(time);
        System.out.println(date2.toString());   //Sun May 27 13:59:00 CST 2018

3、方法

(1)long getTime():返回自 1970年1月1日 00:00:00 GMT 以來此Date物件表示的毫秒值

(2)void setTime(long time):設定此Date物件,以表示 1970年1月1日 00:00:00 GMT 以後time毫秒的時間點

(3)int compareTo(Date anotherDate):比較兩個日期的順序,返回值只有 -1、0、1

注:日期排序時用compareTo()方法

(4)boolean before(Date when):測試此日期是否在指定日期之前

(5)boolean after(Date when):測試此日期是否在指定日期之後

(6)boolean equals(Object obj):比較兩個日期的相等性

注:compareTo()、before()、after()、equals() 比較的都是getTime()返回的long值

(7)int hashCode():雜湊碼是getTime()返回long值的兩部分的異或,即:(int) (this.getTime()^(this.getTime() >> 32))

(8)String toString():預設呼叫,把此Date物件轉換成以下形式的String:dow mon dd hh:mm:ss zzz yyyy

注:dow mon dd hh:mm:ss zzz yyyy :周 月 日 時:分:秒 時區 年

System.out.println(new Date().toString()); //Sun May 27 13:52:28 CST 2018

(9)Object clone():返回此物件的副本

4、日期物件和毫秒值之間的轉換

(1)毫秒值 --> 日期物件:

原因:通過呼叫Date物件的方法對該日期中的各個欄位(年、月、日等)進行操作

a. 通過Date物件的構造方法:new Date(System.currentTimeMillis());

b. 通過setTime()方法:Date date = new Date();    date.setTime(System.currentTimeMillis());

        //long time = System.currentTimeMillis();
        long time = 1527400740144L;
        System.out.println(time);
        Date date = new Date();
        date.setTime(time);
        System.out.println(date.toString());    //Sun May 27 13:59:00 CST 2018
        Date date2 = new Date(time);
        System.out.println(date2.toString());   //Sun May 27 13:59:00 CST 2018

(2)日期物件 --> 毫秒值:

原因:通過具體的數值進行運算

a. 通過getTime()方法:Date date = new Date();    long time = date.getTime();

        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);   //1527402471677

注:獲取毫秒值的另一個常用方法:System.currentTimeMillis();

5、Date中很多方法都已廢棄,使用DateFormat和Calendar替代。DateFormat格式化和解析日期字串Calendar類實現日期時間欄位之間的轉換(把日期解釋為年、月、日、時、分、秒)

二、java.text.Format

1、public abstract class Format:日期/時間 格式化抽象類

2、已知子類:DateFormat、MessageFormat、NumberFormat

注:Format中的子類都是不同步的,需要注意執行緒安全問題

3、Format定義了程式設計介面,將物件格式化為String(使用format()方法)和將String重新解析為物件(使用parseObject()方法)

4、構造方法

(1)protected Format():單獨的構造方法,由子類的構造方法呼叫,通常是隱式的(Format類是抽象的,不能建立物件)

5、方法

Format是抽象類,其子類必須實現三個方法:format(Object obj, StringBuffer toAppendTo, FieldPosition pos)、formatToCharacterIterator(Object obj)、parseObject(String source, ParsePosition pos)

(1)String format(Object obj):格式化一個物件以生成一個字串。等效於 format(obj, new StringBuffer(), new FieldPosition(0)).toString()

(2)abstract StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos):格式化一個物件,並將得到的文字新增到給定的字元緩衝區。如果pos引數標識了一個由format使用的欄位,那麼其索引就設定為第一次出現的此類欄位的起始和結束索引

(3)AttributedCharacterIterator formatToCharacterIterator(Object obj):格式化字串中所有屬性的位置

(4)Object parseObject(String source) throws ParseException:從給定字串的開始處解析文字以生成一個物件。此方法不可以使用給定字串的全部文字

(5)abstract Object parseObject(String source, ParsePosition pos):解析字串文字,生成一個物件。此方法試圖解析從pos給定索引處開始的文字。如果解析成功,則將pos的索引更新到使用的最後一個字元之後的索引(不一定要解析直到字串末尾的所有字元),並返回解析後的物件。更新的pos可以用來指示下一次呼叫此方法的起始點。如果發生錯誤,則不更改pos的索引,將pos的錯誤索引設定為錯誤發生處的字元的索引,並返回null

(6)Object clone():建立並返回此物件的一個副本

6、Format及其子類使用的簡單類

(1)java.text.FieldPosition:Format及其子類用於在格式輸出中標識欄位的簡單類。FieldPosition保持對格式輸出中欄位位置的兩個索引進行跟蹤:欄位的第一個字元的索引和欄位的最後一個字元的索引

(2)java.text.ParsePosition:Format及其子類所使用的簡單類,用來在解析過程中跟蹤當前位置(當前的解析位置、出錯時的索引)

三、java.text.DateFormt

1、public abstract class DateFormat extends Format:日期/時間 格式化抽象類的子抽象類

2、已知子類:SimpleDateFormat

3、DateFormat 將 日期/時間 格式化,包括:日期-->文字、文字-->日期(日期為Date物件或者毫秒數)

4、DateFormat提供了很多類方法,以獲得基於預設或給定語言環境和多種格式化風格的預設 日期/時間 Formatter(格式化風格包括:FULL、LONG、MEDIUM、SHORT)

5、構造方法

(1)protected DateFormat():建立一個新的DateFormat,子類初始化使用(DateFormat類是抽象的,不能建立物件)

6、工廠方法

DateFormat是抽象類,不能直接new物件,但可以通過靜態工廠方法獲取 日期/時間 物件,直接用 類名.工廠方法 即可(工廠是專門用於生產物件的地方,工廠方法都是靜態的)

作用:格式化不同語言環境、風格的日期。

(1)static final DateFormat getInstance():獲取為日期和時間使用SHORT風格的預設日期/時間格式器

(2)static final DateFormat getDateInstance():獲取日期格式器,該格式器具有預設語言環境的預設格式化風格

(3)static final DateFormat getDateInstance(int style):給定格式化風格

(4)static final DateFormat getDateInstance(int style, Locale aLocale):給定語言環境,給定格式化風格

(5)static final DateFormat getTimeInstance():獲取時間格式器

(6)static final DateFormat getTimeInstance(int style)

(7)static final DateFormat getTimeInstance(int style, Locale aLocale)

(8)static final DateFormat getDateTimeInstance():獲取日期/時間格式器

(9)static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)

(10)static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)

7、其他方法

(1)final String format(Date date):將一個Date格式化為日期/時間字串

(2)abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)

(3)final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)

(4)Date parse(String source) throws ParseException:從給定字串的開始解析文字,以生成一個日期。該方法不使用給定字串的整個文字

(5)abstract Date parse(String source, ParsePosition pos):根據給定的解析位置開始解析日期/時間字串

(6)Object parseObject(String source, ParsePosition pos):解析字串中的文字,以生成一個Date

(7)Calendar getCalendar():獲取與此日期/時間格式器關聯的日曆

(8)void setCalendar(Calendar newCalendar):設定此日期格式所使用的日曆。最初為指定或預設的語言環境使用預設的日曆

(9)NumberFormat getNumberFormat():獲取此日期/時間格式器用於格式化和解析時間的數字格式器

(10)void setNumberFormat(NumberFormat newNumberFormat):允許使用者設定數字格式器

(11)TimeZone getTimeZone():獲取時區。返回與此DateFormat的日曆相關聯的時區

(12)void setTimeZone(TimeZone zone):為此DateFormat物件的日曆設定時區

(13)boolean isLenient():判斷日期/時間解析是否為不嚴格

(14)void setLenient(boolean lenient):指定日期/時間解析是否不嚴格。進行不嚴格解析時,解析程式可以使用啟發式的方法來解釋與此物件的格式不精確匹配的輸入。進行嚴格解析時,輸入必須匹配此物件的格式

(15)static Locale[] getAvailableLocales():返回所有語言環境的陣列

8、DateFormat的clone()方法,裡面呼叫除了自身之外的兩個類的clone()方法

(1)Calendar --> TimeZone

(2)NumberFormat

9、注意:日期格式不是同步的。建議為每個執行緒建立獨立的格式例項。如果多個執行緒同時訪問一個格式,則它必須保持外部同步

        /**
         * 日期物件 --> 日期格式的字串
         * DateFormat本身不能建立例項,直接獲取例項,風格是固定的
         * 自定義的日期格式用SimpleDateFormat
         */

        //日期物件
        Date date = new Date();
        
        //日期/時間格式器
        DateFormat format = DateFormat.getDateTimeInstance();
        //怎麼格式化,日期格式器最清楚
        String str = format.format(date);
        System.out.println(str);    //2018-6-4 10:57:06

        //日期格式器,該格式器具有預設的風格
        format = DateFormat.getDateInstance();
        str = format.format(date);
        System.out.println(str);    //2018-6-4

        //指定風格:FULL
        format = DateFormat.getDateInstance(DateFormat.FULL);
        str = format.format(date);
        System.out.println(str);   //2018年6月4日 星期一

        //指定風格:LONG
        format = DateFormat.getDateInstance(DateFormat.LONG);
        str = format.format(date);
        System.out.println(str);   //2018年6月4日

        //指定風格:MEDIUM(和DateFormat.getDateInstance()相同)
        format = DateFormat.getDateInstance(DateFormat.MEDIUM);
        str = format.format(date);
        System.out.println(str);   //2018-6-4

        //指定風格:SHORT
        format = DateFormat.getDateInstance(DateFormat.SHORT);
        str = format.format(date);
        System.out.println(str);   //18-6-4
        /**
         * 日期格式的字串 --> 日期物件
         * 使用DateFormat類中的parse()方法
         */

        String str = "2018-06-05";
        //String str = "2018年6月5日"; //拋異常ParseException。應使用DateFormat.getDateInstance(DateFormat.LONG)
        //預設風格的物件,只支援對應格式的轉換。如果 str="2018年6月5日",會丟擲ParseException
        DateFormat dateFormat = DateFormat.getDateInstance();
        Date date = dateFormat.parse(str);
        System.out.println(date);   //Tue Jun 05 00:00:00 CST 2018

注:使用指定風格FULL、LONG、MEDIUM、SHORT,可以針對date(日期)、time(時間),也可以針對dateTime(日期/時間)

        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
        String str = dateFormat.format(date);
        System.out.println(str);    //2018年6月4日 CST 下午11:36:04

四、java.text.SimpleDateFormat

1、SimpleDateFormat:格式化(日期-->文字)和解析(文字-->日期)日期的具體類。可以選擇任何使用者定義的日期-時間格式的模式。

2、構造方法

(1)SimpleDateFormat()

(2)SimpleDateFormat(String pattern):pattern是描述日期和時間格式的模式,即自定義的模式

(3)SimpleDateFormat(String pattern, Locale locale):locale是要被使用的語言環境

(4)SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols):用給定的模式和日期符號構造SimpleDateFormat。formatSymbols是要用來格式化的日期格式符號

注:DateFormatSymbols類是一個公共類,用於封裝可本地化的日期-時間格式化資料。DateFormat和SimpleDateFormat都使用DateFormatSymbols封裝此資訊。通常不應直接使用DateFormatSymbols,建議最好使用DateFormat類的工廠方法建立日期-時間格式器(formatter):getXxxInstance()。這些方法自動為格式器建立一個DateFormatSymbols

3、方法

(1)StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos):將給定的Date格式化為日期/時間字串,並將結果新增到給定的StringBuffer

(2)Date parse(String text, ParsePosition pos):解析字串的文字,生成Date

(3)AttributedCharacterIterator formatToCharacterIterator(Object obj)

(4)void setDateFormatSymbols(DateFormatSymbols newFormatSymbols):設定此日期格式的日期和時間格式符號

(5)void applyPattern(String pattern):將給定模式字串應用於此日期格式

(6)void applyLocalizedPattern(String pattern):將給定的本地化模式字串應用於此日期格式

(7)String toPattern():返回描述此日期格式的模式字串

(8)String toLocalizedPattern():返回描述此日期格式的本地化模式字串

        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        String str = simpleDateFormat.format(date);
        System.out.println(str);    //2018/6/4 下午10:42

        simpleDateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
        str = simpleDateFormat.format(date);
        System.out.println(str);    //2018-06-04 22:42:58

        System.out.println(new SimpleDateFormat().toPattern());     //y/M/d ah:mm
        System.out.println(simpleDateFormat.toPattern());           //yyyy-MM-dd HH:mm:ss

4、DateFormat是抽象類,不能建立物件,用getXxxInstance()方法直接獲取物件,其格式器風格已經被固化在物件中(呼叫getXxxInstance()方法時已經new好物件了)。想要自定義風格的格式器,自己建立物件,用SimpleDateFormat

        /**
         * 日期物件 --> 日期格式的字串
         * 使用可以自定義的日期格式器SimpleDateFormat
         */

        Date date = new Date();
        //自定義風格
        DateFormat format = new SimpleDateFormat("yyyy--MM--dd");
        String str = format.format(date);
        System.out.println(str);    //2018--06--05

        //DateFormat使用的也是SimpleDateFormat子類
        DateFormat dateFormat = DateFormat.getDateInstance();
        System.out.println(dateFormat); //[email protected]
        /**
         * 日期格式的字串 --> 日期物件
         * 使用SimpleDateFormat物件自定義格式,再用parse()方法進行轉換
         */

        String str = "2018--06--05";
        //預設沒有的風格 -- 自定義
        DateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd");
        //必須是對應格式的字串才可以轉換,否則丟擲異常
        Date date = dateFormat.parse(str);
        System.out.println(date);   //Tue Jun 05 00:00:00 CST 2018

5、練習

    /**
     * 練習:“2012-3-17”到“2012-4-6”中間有多少天
     * 思路:兩個日期相減,能減的可以是毫秒值
     * 步驟:
     * (1)將日期格式的字串轉成Date物件
     * (2)將Date物件轉成毫秒值
     * (3)相減,再變成天數
     */
    public static int getDays(String str1, String str2) throws ParseException {

        //將日期字串轉成日期物件(二選一,根據情況看使用哪個)
        DateFormat dateFormat = DateFormat.getDateInstance();
        dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        Date date1 = dateFormat.parse(str1);
        Date date2 = dateFormat.parse(str2);

        long time1 = date1.getTime();
        long time2 = date2.getTime();
        long time = Math.abs(time1 - time2);

        int days = getDays(time);
        return days;
    }

    private static int getDays(long time) {
        int days = (int) (time/1000/60/60/24);
        return days;
    }

    public static void main(String[] args) throws ParseException {
        int days = getDays("2012-3-17", "2012-3-18");
        System.out.println(days);
    }

五、java.util.Calendar

1、public abstract class Calendar

2、Calendar為操作日曆欄位YEAR、MONTH、DAY_OF_MONTH、HOUR等提供了一些方法

3、抽象類不能建立物件,要通過工廠獲取物件。根據物件的輸出結果(鍵值對),想要獲取值,需要通過鍵拿值

        Calendar c= Calendar.getInstance();
        System.out.println(c);

        /** 輸出結果:
         *  time=1528268859185,
         *  areFieldsSet=true,
         *  areAllFieldsSet=true,
         *  lenient=true,
         *  zone=sun.util.calendar.ZoneInfo[
         *      id="Asia/Shanghai",
         *      offset=28800000,
         *      dstSavings=0,
         *      useDaylight=false,
         *      transitions=19,
         *      astRule=null
         *  ],
         *  firstDayOfWeek=1,
         *  minimalDaysInFirstWeek=1,
         *  ERA=1,
         *  YEAR=2018,
         *  MONTH=5,
         *  WEEK_OF_YEAR=23,
         *  WEEK_OF_MONTH=2,
         *  DAY_OF_MONTH=6,
         *  DAY_OF_YEAR=157,
         *  DAY_OF_WEEK=4,
         *  DAY_OF_WEEK_IN_MONTH=1,
         *  AM_PM=1,
         *  HOUR=3,
         *  HOUR_OF_DAY=15,
         *  MINUTE=7,
         *  SECOND=39,
         *  MILLISECOND=185,
         *  ZONE_OFFSET=28800000,
         *  DST_OFFSET=0
         */
        //根據物件返回的結果(是一堆鍵值對),通過鍵拿值
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;  //月份從0開始
        int day = c.get(Calendar.DAY_OF_MONTH);
        int week = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year + "-" + month + "-" + day + " " + getWeek(week)); //2018-6-6 星期三


    private static String getWeek(int i){
        String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        return weeks[i];
    }

4、欄位:可以通過 類名.欄位名 獲取相應的值

eg:

(1)Calendar.JANUARY  一月(值為0), Calendar.SUNDAY 星期日(值為1), Calendar.MONDAY 星期一(值為2)

         Calendar.AM 上午(值為0), Calendar.PM 下午(值為1)

(2)Calendar.getInstance().get(Calendar.HOUR_OF_DAY) 值為當前小時(24小時制)

         Calendar.getInstance().get(Calendar.HOUR) 值為當前小時(十二小時制)

         Calendar.getInstance().get(Calendar.MINUTE) 值為當前分鐘

         Calendar.getInstance().get(Calendar.SECOND) 值為當前秒

         Calendar.getInstance().get(Calendar.MILLISECOND) 值為當前毫秒

         Calendar.getInstance().get(Calendar.YEAR ) 值為當前年

         Calendar.getInstance().get(Calendar.MONTH ) 值為當前月,1月值為0,2月值為1...

         Calendar.getInstance().get(Calendar.DATE )  = Calendar.getInstance().get(Calendar.DAY_OF_MONTH) 值為當前日

         Calendar.getInstance().get(Calendar.DAY_OF_WEEK) 值為當前星期數,週日值為1,週一值為2...

         Calendar.getInstance().get(Calendar.WEEK_OF_MONTH) 值為當前月中的星期數

         Calendar.getInstance().get(Calendar.WEEK_OF_YEAR) 值為當前年中的星期數

注:值一般都是從1開始的,只有月份是從0開始的

5、構造方法

Calendar是抽象類,不能建立物件。其構造方法是給子類初始化用的

(1)protected Calendar():構造一個帶有預設時區和語言環境的Calendar

(2)protected Calendar(TimeZone zone, Locale aLocale):構造一個帶有指定時區和語言環境的Calendar

6、工廠方法

(1)static Calendar getInstance()

(2)static Calendar getInstance(Locale aLocale)

(3)static Calendar getInstance(TimeZone zone)

(4)static Calendar getInstance(TimeZone zone, Locale aLocale)

7、方法

(1)int get(int field):返回給定日曆欄位的值,即獲取當前xxx時間

(2)void set(int field, int value):設定指定時間

(3)final void set(int year, int month, int date):設定日曆欄位YEAR、MONTH、DAY_OF_MONTH的值

(4)final void set(int year, int month, int date, int hourOfDay, int minute)

(5)final void set(int year, int month, int date, int hourOfDay, int minute, int second)

(6)abstract void add(int field, int amount):為給定的日曆欄位新增或減去指定的時間量,即可以引起日期/時間的偏移

eg:從當前日曆時間減去5天:add(Calendar.DAY_OF_MONTH, -5)

    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2018, 11, 20); //2018年12月20日星期五
        //calendar.add(Calendar.MONTH, 2);    //2019年2月20日星期四
        calendar.add(Calendar.DAY_OF_MONTH, 12);    //2019年1月1日星期三
        showDate(calendar);
    }

    private static void showDate(Calendar calendar) {
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int week = calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println(year + "年" + month + "月" + day + "日" + getWeek(week));
    }

    private static String getWeek(int week) {
        //星期日值為1,星期一值為2
        String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        return weeks[week];
    }

(7)boolean before(Object when):判斷此Calendar表示的時間是否在指定Object表示的時間之前。等效於compareTo(when)<0

(8)boolean after(Object when):判斷此Calendar表示的時間是否在指定Object表示的時間之後。等效於compareTo(when)>0

(9)int compareTo(Calendar anotherCalendar):比較兩個Calendar物件表示的時間值(從曆元至現在的毫秒偏移量)

(10)final void clear():將此Calendar的所有日曆欄位值和時間值(從曆元至現在的毫秒偏移量)設定成未定義

(11)final void clear(int field)

        /**
         * clear():將日期的年月日時分秒都恢復到格林尼治時間
         * clear(field):將field對應的日期/時間恢復到格林尼治時間,但日(DAY_OF_MONTH)和小時(HOUR_OF_DAY、HOUR、AM_PM)除外
         */
        Calendar calendar = Calendar.getInstance(); //2018年12月20日星期五 23時34分1秒
        //calendar.clear(Calendar.YEAR);  //1970年12月20日星期一 23時34分1秒
        //calendar.clear(Calendar.DAY_OF_MONTH);  //2018年12月20日星期五 23時34分1秒
        //calendar.clear(Calendar.HOUR_OF_DAY);   //2018年12月20日星期五 23時34分1秒
        //calendar.clear(Calendar.SECOND);    //2018年12月20日星期五 23時34分0秒
        calendar.clear();   //1970年1月1日星期五 0時0分0秒

(12)final Date getTime():返回一個表示此Calendar時間值(從曆元至現在的毫秒偏移量)的Date物件

(13)long getTimeInMillis():返回此Calendar的時間值(從曆元至現在),以毫秒為單位 

(14)final void setTime(Date date):使用給定的Date設定此Calendar的時間

(15)void setTimeInMillis(long millis):用給定的long值設定此Calendar的當前時間值。millis是以從曆元至現在所經過的毫秒數

(16)void complete():填充日曆欄位中所有未設定的欄位

8、Calendar類中需要掌握的常見方法:getsetadd(可以引起時間的偏移)、roll(不進位)、clear

    public static void main(String[] args) throws ParseException {
        Calendar c = Calendar.getInstance();
        c.set(2018, 7, 9);  //2018年8月9日
        System.out.println(showDate(c));
//        c.add(Calendar.MONTH, 5);   //2019年1月9日
//        System.out.println(showDate(c));
        c.roll(Calendar.MONTH, 5);   //2018年1月9日
        System.out.println(showDate(c));
    }

    public static String showDate(Calendar calendar) {
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return year + "年" + month + "月" + day + "日";
    }

六、總結

關於日期的計算,使用Calendar。Calendar可與Date、long相互轉換

七、練習

相關推薦

20-Date+Format+DateFormat+SimpleDateFormat+Calendar

一、java.util.Date 1、年:y,月:0-11,日:1-31,時:0-23,分:0-59,秒:0-61(值60和61只對閏秒發生) 注:只有日是1-xx,其他都是0-xx 2、建構函式 (1)Date():分配Date物件並初始化此物件,以表示分配它的時間

Java中DateDateFormatCalendar

文章目錄 Date類 DateFormat類是日期/時間格式化子類的抽象類, Calendar類 Date類 需要導包 1、

DateDateFormatCalendar、Math、System、包裝類、正則表示式

  java.util.Date 日期類     基礎概念:       時間原點: 1970 1月 1日 00:00:00       1秒 = 1000毫秒     構造方法         public Date() 返回當前日期 當前日期=1970到現在所經歷過的毫秒值        

Java時間日期類 DateDateFormatCalendar

Date類   日期 import java.util.Date; public class DateDemo { public static void main(String[] args) { Date d = new Date(); //預設當前系統時間 Date d2 =

16_常用API_第16天(正則表達式、DateDateFormatCalendar

調用方法 pat 簡單 throw test 邊界 sdf 當前 所有 今日內容介紹1、正則表達式的定義及使用2、Date類的用法3、Calendar類的用法 ==========================================第一階段====

Java可視化日歷(Date類、DATe Format類、Calendar類綜合運用),開發可視化日歷小程序

nextline inf 表示 輸入日期 static lin print void 日期 Java時間日期類綜合運用,開發可視化日歷小程序 由鍵盤輸入指定格式的日期,打印這個月的日歷 1、代碼 import java.text.DateFormat; import jav

Date類與SimpleDateFormat類中parse()方法和format()方法

格式 tex rgs 方法 bsp tr1 led mar java 1 package ppt11util類; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat;

API-正則表示式,包裝類,Date,SimpleDateFormat,Calendar

正則表示式:    (1)很多時候,我們都需要對一些字元進行匹配,查詢,替換等複雜的             操作。我們可以通過"正則表示式"來幫助實現這些複雜操作。    (2)正則表示式, 它是一

日期與時間、 Date型別、 SimpleDateFormatCalendar

======================================================================= *日期與時間  1.java中的時間:     (1)java中採用標準類庫的Date型別時間。使用距離一個固定時間點的      

正則表示式、Pattern和Matcher類、Math類、Random類、System類、BigDecimal類、Date類、SimpleDateFormat類、Calendar

1.正則表示式 即給定的一個用來描述符合一定規則的字串的單個字串,是一種規則; 正則表示式的組成規則: 規則字元在java.util.regex Pattern類中 A:字元 x 字元 x。舉例:‘a’表示字元a \ 反斜線字元。 \n 新行(換行)符 (’\u

Java的知識點22——時間處理相關類、Date時間類(java.util.Date)、DateFormat類和SimpleDateFormat

時間處理相關類 用long型別的變數來表示時間,獲得現在時刻的“時刻數值”:long now = System.currentTimeMillis(); Date時間類(java.util.Date)  在標準Java類庫中包含一個Date類。它的物件表示一個特

Date的使用(SimpleDateFormat,DateFormat)

Date類的使用 public class Date extends Object implements Serializable, Cloneable, Comparable<Date> Date課程以Date級的Date表示特定的時間。 在JDK 1.1之前, 

date SimpleDateFormat Calendar等幾種時間日期類的簡略分析

Calendar類 這是一個對時間操作的類 該類是一個abstract類,提供了getInstance方法來例項化Calendar類 :Calendar rightNow = Calendar.getInstance(); public static void main

Math,Date,DateFormatCalendar

 * Math * 成員變數: * public static final double PI  * public static final double E * 成員方法: *  public static int abs(int a):絕對值 *public static

javascript Date format(js日期格式化)

占位符 星期 .com switch pro com 毫秒 ida monday 方法一: // 對Date的擴展,將 Date 轉化為指定格式的String// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個占位符, // 年(y)可

(012)每日SQL學習:TO_CHAR(DATE,FORMAT)

nth day sda pre format borde color col AC SYSDATE 2009-6-16 15:25:10   TRUNC(SYSDATE) 2009-6-16   TO_CHAR(SYSDATE,‘YY

ORA-01830: date format picture ends before converting entire input string

這個錯誤是日期格式化的問題; 例子: SELECT COUNT (*) AS col_0_0_ FROM SAF_T_PREPLAN_DRILL saftprepla0_ WHERE saftprepla0_.DEL_FLAG = '0' AND saftprepla0_.MAIN_D

springboot 2.0 配置 spring.jackson.date-format 不生效

問題:application.properties中的如下配置不生效,返回時間戳 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss 原因分析:        攔截器繼承的 Web

Codeforces Alpha Round #20 (Codeforces format)

You are given a weighted undirected graph. The vertices are enumerated from 1 to n. Your task is to find the shortest path between the vertex&nbs

Java中【日期Date】【日曆Calendar】【毫秒數Long】三者之間的轉換總結

網上看了很多這類的文章,但大多不全面。所以總結如下以備檢視。 注:Date和Calendar都是util包下的 1、Date和Calendar之間 1.1、 Date->Calendar