Java基礎(chǔ) 第三節(jié) 第二

      網(wǎng)友投稿 759 2022-05-29

      日期時(shí)間類

      Date 類

      概述

      代碼展示

      常用方法

      DateFormat 類

      構(gòu)造方法

      格式規(guī)則

      常用方法

      format 方法

      parse 方法

      練習(xí)

      思路:

      代碼實(shí)現(xiàn)

      Calendar 類

      概念

      常用方法

      get/set 方法

      add 方法

      getTime 方法

      Date 類

      概述

      java.util.Date類表示特定的瞬間, 精確到毫秒.

      繼續(xù)查閱 Date 類的描述, 發(fā)現(xiàn) Date 擁有多個(gè)構(gòu)造函數(shù), 只是部分已經(jīng)過時(shí). 但是其中有未過時(shí)的構(gòu)造函數(shù)可以把毫秒值轉(zhuǎn)成日期對(duì)象.

      public Date(): 分配 Date 對(duì)象并初始化此對(duì)象, 以表示分配它的時(shí)間 (精確到毫秒).

      public Date(long date): 分配 Date 對(duì)象并初始化此對(duì)象, 以表示自從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間 (稱為 “歷元 (epoch)”, 即 1970 年 1 月 1 日 00:00:00 GMT) 以來的指定毫秒數(shù).

      代碼展示

      簡(jiǎn)單來說: 使用無參構(gòu)造, 可以自動(dòng)設(shè)置當(dāng)前系統(tǒng)時(shí)間的毫秒時(shí)刻. 指定 long 類型的構(gòu)造參數(shù), 可以自定義毫秒時(shí)刻. 例如:

      import java.util.Date; public class Test4 { public static void main(String[] args) { // 創(chuàng)建日期對(duì)象, 把當(dāng)前的時(shí)間 System.out.println(new Date()); // 創(chuàng)建日期對(duì)象, 把當(dāng)前時(shí)間的毫秒值轉(zhuǎn)成日期對(duì)象 System.out.println(new Date(0L)); } } 輸出結(jié)果: Thu Nov 26 17:50:49 EST 2020 Wed Dec 31 19:00:00 EST 1969

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      注: 在使用 println 方法是, 會(huì)自動(dòng)調(diào)用 Date 類中的 toString 方法. Date 類對(duì) Object 類中的 toString 方法進(jìn)行了覆蓋重寫, 所以結(jié)果為指定格式的字符串.

      常用方法

      Date 類中的多數(shù)方法已經(jīng)過時(shí), 常用的方法有:

      public long getTime(): 把日期對(duì)象轉(zhuǎn)換成對(duì)應(yīng)的時(shí)間毫秒值.

      DateFormat 類

      java.text.DateFormat是日期/時(shí)間格式化子類的抽象類. 我們通過這個(gè)類可以幫我們完成日期和文本之間的轉(zhuǎn)換, 也就是可以在 Date 對(duì)象與 String 對(duì)象之間進(jìn)行來回轉(zhuǎn)換.

      格式化: 按照是定的格式, 從 Date 對(duì)象轉(zhuǎn)化為 String 對(duì)象

      解析: 按照指定的格式, 從 String 對(duì)象轉(zhuǎn)化為 Date 對(duì)象

      構(gòu)造方法

      由于 DateFormat 為抽象類, 不能直接支援, 所以需要常用的子類java.text.SimpleDateFormat. 這個(gè)類需要一個(gè)模式 (格式) 來指定格式化或解析的標(biāo)準(zhǔn). 構(gòu)造方法為:

      public SimpleDateFormat(String pattern): 用給定的模式和默認(rèn)語(yǔ)言環(huán)境的日期格式符號(hào)構(gòu)造 SimpleDataFormat. 參數(shù) pattern 是一個(gè)字符串, 代表時(shí)間的自定義格式.

      格式規(guī)則

      常用的格式規(guī)則為:

      注: 更詳細(xì)的格式規(guī)則, 可以參考 SimpleDataFormat 類的 API 文檔.

      創(chuàng)建 SimpleDataFormat 對(duì)象的代碼如下:

      import java.text.DateFormat; import java.text.SimpleDateFormat; public class Test { public static void main(String[] args) { // 對(duì)應(yīng)的日期格式如: 2020-11-26 16:06:38 DateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      常用方法

      DataFormat 類的常用方法有:

      public String format(Date date): 將 Date 對(duì)象格式化為字符串

      public Date parse(String source): 將字符串解析為 Date 對(duì)象

      format 方法

      使用 format 方法的代碼為:

      import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Test6 { public static void main(String[] args) { Date date = new Date(); // 創(chuàng)建日期格式對(duì)象, 在獲取格式化對(duì)象時(shí)可以指定風(fēng)格 DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); String str = dateFormat.format(date); System.out.println(str); // 輸出結(jié)果: 2020年11月26日 } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      parse 方法

      使用 parse 方法的代碼為:

      import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test7 { public static void main(String[] args) throws ParseException { DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); String str = "2020年11月26日"; Date date = dateFormat.parse(str); System.out.println(date); // 輸出結(jié)果: Thu Nov 26 00:00:00 EST 2020 } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      練習(xí)

      請(qǐng)使用日期時(shí)間相關(guān)的 API, 計(jì)算出一個(gè)人已經(jīng)出生了多少天.

      思路:

      獲取當(dāng)前時(shí)間對(duì)應(yīng)的毫秒值

      獲取自己出生日期對(duì)應(yīng)的毫秒值

      兩個(gè)時(shí)間相減 (當(dāng)前時(shí)間-出生日期)

      代碼實(shí)現(xiàn)

      import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Test { public static void main(String[] args) throws ParseException { System.out.println("請(qǐng)輸入出生日期 格式 yyyy-MM-dd"); // 獲取出生日期, 鍵盤輸入 String birthday = new Scanner(System.in).next(); // 將字符串日期, 轉(zhuǎn)成 Date 對(duì)象 // 創(chuàng)建 SimpleDateFormat 對(duì)象, 寫日期模式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // 調(diào)用方法parse, 字符串轉(zhuǎn)成日期對(duì)象 Date birthdayDate = df.parse(birthday); // 獲取今天的日期對(duì)象 Date todayDate = new Date(); // 將兩個(gè)日期轉(zhuǎn)成毫秒值, Date類的方法getTime long birthdaySecond = birthdayDate.getTime(); long todaySecond = todayDate.getTime(); long secone = todaySecond - birthdaySecond; if (secone < 0){ System.out.println("還沒出生呢"); } else { // 將毫秒準(zhǔn)換為天 System.out.println(secone/1000/60/60/24); } } }

      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

      Calendar 類

      概念

      日歷我們都見過, ```java.util.Calendar``是日歷類, 在 Date 后出現(xiàn), 替換掉了許多 Date 的方法. 該類將所有可能用到的時(shí)間信息封裝為靜態(tài)成員變量, 方便獲取. 日歷類就是方便獲取各個(gè)時(shí)間屬性的.

      Calendar 為抽象類, 由于語(yǔ)言敏感性, Calendar 類在創(chuàng)建對(duì)象時(shí)并非之間創(chuàng)建, 而是通過靜態(tài)方法創(chuàng)建, 返回子類對(duì)象.

      Calendar 靜態(tài)方法

      public static Calendar getInstance(): 使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境獲得一個(gè)日歷.

      import java.util.Calendar; public class Test9 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); } }

      1

      2

      3

      4

      5

      6

      7

      常用方法

      根據(jù) Calender 類的 API 文檔, 常用方法有:

      public int get(int field): 返回給定日歷字段的值

      public void set(int field, int value): 將給定的日歷字段設(shè)置為給定值

      public abstract void add(int field, int amount): 根據(jù)日歷的規(guī)則, 為給定的日歷字段添加或減去指定的時(shí)間量

      public Date getTime(): 返回一個(gè)表示此 Calendar 時(shí)間值 (從歷元到現(xiàn)在的毫秒偏移量) 的 Date 對(duì)象

      Calendar 類中提供很多成員常量, 代表給定的日歷字段:

      get/set 方法

      get 方法用來獲取指定字段的值, set 方法用來設(shè)置指定字段的值. 代碼如下:

      import java.util.Calendar; public class Test10 { public static void main(String[] args) { // 創(chuàng)建Calendar對(duì)象 Calendar calendar = Calendar.getInstance(); // 獲取年 int year = calendar.get(Calendar.YEAR); // 獲取月 int month = calendar.get(Calendar.MONTH) + 1; // 獲取日 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); String result = year + "年" + month + "月" + dayOfMonth + "日"; System.out.println(result); // 輸出結(jié)果: 2020年11月26日 } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      Java基礎(chǔ) 第三節(jié) 第二課

      16

      17

      import java.util.Calendar; public class Test11 { public static void main(String[] args) { // 創(chuàng)建Calendar對(duì)象 Calendar calendar = Calendar.getInstance(); // 設(shè)置年 calendar.set(Calendar.YEAR, 2020); // 設(shè)置月 calendar.set(Calendar.MONTH, 0); // 設(shè)置日 calendar.set(Calendar.DAY_OF_MONTH, 26); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      add 方法

      add 方法可以對(duì)指定日歷字段進(jìn)行加減操作, 如果第二個(gè)參數(shù)為正數(shù)則加上偏移量, 反則減去偏移量. 代碼如下:

      import java.util.Calendar; public class Test12 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); print(calendar); // 輸出結(jié)果: 2020年11月26日 calendar.add(Calendar.DAY_OF_MONTH, 2); // 加2天 calendar.add(Calendar.YEAR, -3); // 減3年 print(calendar); // 輸出結(jié)果: 2017年11月28日 } public static void print(Calendar calendar){ int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); String result = year + "年" + month + "月" + dayOfMonth + "日"; System.out.println(result); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      getTime 方法

      Calender 中的 getTime 方法并不是獲取毫秒時(shí)刻, 而是拿到對(duì)應(yīng)的 Date 對(duì)象.

      import java.util.Calendar; import java.util.Date; public class Test13 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); Date date = new Date(); System.out.println(date); // 輸出結(jié)果: Thu Nov 26 23:28:46 EST 2020 } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      注: 西方星期的開始為周日, 中國(guó)為周一. 在 Calendar 類中, 月份的表示是以 0-11 代表 1-12 月. 日期是有大小關(guān)系的, 時(shí)間靠后, 時(shí)間越大.

      API Java

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:很多人不知道的求素?cái)?shù)的正確方法
      下一篇:編程的樂趣與苦惱
      相關(guān)文章
      成人亚洲国产va天堂| 亚洲AV成人无码久久精品老人| 亚洲av色福利天堂| 亚洲精品无码成人AAA片| 亚洲成AⅤ人影院在线观看| 亚洲熟女综合色一区二区三区 | 亚洲视频一区在线观看| 亚洲国产精品无码久久SM| 国产成A人亚洲精V品无码| 亚洲精品亚洲人成在线观看| 亚洲愉拍99热成人精品热久久| 中文亚洲AV片不卡在线观看| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲综合国产一区二区三区| 亚洲精品无码不卡在线播HE| 亚洲高清国产拍精品26U| 午夜影视日本亚洲欧洲精品一区| 亚洲电影一区二区| 亚洲精品美女在线观看| 亚洲国产午夜精品理论片| 亚洲成人激情小说| 亚洲精品无码成人| 内射无码专区久久亚洲| 国产精品亚洲视频| 国产v亚洲v天堂无码网站| 91久久亚洲国产成人精品性色| 91亚洲精品自在在线观看| 亚洲一区二区三区亚瑟| 亚洲午夜无码久久| 五月天婷亚洲天综合网精品偷| 亚洲一区二区三区无码影院| 国产亚洲成AV人片在线观黄桃| 亚洲国语精品自产拍在线观看 | 亚洲国产av无码精品| 久久久久久亚洲精品不卡| 亚洲成AV人片在线观看| 亚洲视频中文字幕在线| 在线观看亚洲AV每日更新无码| 国产亚洲蜜芽精品久久| 一本久久a久久精品亚洲| 亚洲免费精彩视频在线观看|