JAVA學習進階篇之時間與日期相關類
Date類
java.util.Date:表示日期和時間的類,Date 表示特定的瞬間,精確到毫秒。
毫秒值的概念與作用
毫秒:千分之一秒,1000毫秒=1。
秒特定的瞬間:一個時間點,一剎那時間
例如:
2088-08-08 09:55:33:333瞬間
2088-08-0809:55:33:334瞬間
2088-08-08 09:55:33:335瞬間
…
毫秒值的作用:可以對時間和日期進行計算。
2022-01-01到2088-01-01中間一共有多少天?
可以日期轉換為毫秒進行計算,計算完畢,在把毫秒轉換為日期。
把日期轉換為毫秒:
當前的日期:2022-08-28
時間原點(0毫秒):1970年1月1日00:00:00(英國格林威治)
就是計算當前日期到時間原點之間一共經(jīng)歷了多少毫秒(374267540068L)
注意:
中國屬于東八區(qū),會把時間增加8個小時1970年1月1日08:00:00
把毫秒轉換為日期:
1天=24x60x60=86400秒=86400x1000=86400000毫秒
構造方法
學習類都是一個過程,先學習這個類的構造方法;有了構造方法后,就可以創(chuàng)建對象,然后通過對象調用它里面的成員方法。
無參構造
public static void main(String[] args) {
//Data的空參數(shù)構造方法-Data()獲取當前系統(tǒng)的時間(精確到毫秒的系統(tǒng)當前時間)
Date date = new Date();
//java.util.Date類的toString()方法已經(jīng)被重寫了
//所以直接輸出對象,不是這個對象的內存地址,而是一個日期字符串
System.out.println(date); //輸出:Sun Aug 28 21:18:47 CST 2022
}
有參構造
public static void main(String[] args) {
// Date類的帶參數(shù)構造方法
//Date(long date) :傳遞毫秒值轉換為Date日期
Date date = new Date(0L); //把參數(shù)里面的毫秒轉成對應的日期
System.out.println(date); //輸出:Thu Jan 01 08:00:00 CST 1970
Date date1 = new Date(1620543792746L); //把參數(shù)里面的毫秒轉成對應的日期
System.out.println(date1); //輸出:Sun May 09 15:03:12 CST 2021
}
成員方法getTime()
public static void main(String[] args) {
// Long getTime()把日期轉換為毫秒值(相當于System.currentTimeMillis()方法)
// 返回自1970年 1月一日 00:00:00 到當前系統(tǒng)時間一共經(jīng)歷了多少毫秒
Date date = new Date();
long time = date.getTime();
System.out.println(time); //1661693372684
}
currentTimeMillis方法
此方法是System類的一個方法,作用和getTime()一樣,返回自1970年 1月一日 00:00:00
到當前系統(tǒng)時間一共經(jīng)歷了多少毫秒。
public static void main(String[] args) {
Long TimeMillis = System.currentTimeMillis();
System.out.println(TimeMillis); //輸出:1661693849165
}
那么這個方法可以用來干什么呢?
看的出來,經(jīng)過測試,下列代碼空循環(huán)一億次,用了3毫秒
public static void main(String[] args) {
//統(tǒng)計一個方法的耗時
//在調用目標方法之前記錄一個毫秒數(shù)
Long TimeMillis = System.currentTimeMillis();
//這里調用方法
print();
//在執(zhí)行完目標方法之后記錄一個毫秒數(shù)
Long end = System.currentTimeMillis();
System.out.println("耗費時長:"+(end-TimeMillis)+"毫秒"); //輸出:耗費時長:3毫秒
}
public static void print(){
for (int i = 0; i < 100000000; i++) {
}
}
DateFormat和SimpleDateFormat類
DateFormat類和它的子類SimpleDateFormat,后者是前者的子類,所以它有父類的format和parse方法。
java.text.DateFormat:是日期/時間格式化子類的抽象類。
作用: 格式化(也就是日期->文本) 、解析(文本->日期)
構造方法
DateFormat類是一個抽象類,無法直接創(chuàng)建對象使用,可以使用DateFormat類的子類
java.text.SimpleDateformat extends DateFormat
構造方法:
SimpleDateFormat(String pattern):用給定的模式和默認語言環(huán)境的日期格式符號構造SimpleDateFormat。
參數(shù): String pattern:傳遞指定的模式
模式:區(qū)分大小寫
| y | 年 |
|---|---|
| M | 月 |
| d | 日 |
| H | 時 |
| m | 分 |
| s | 秒 |
寫對應的模式,會把模式替換為對應的日期和時間 “yyyy-MM-dd HH:mm:ss”
注意:
模式中的字母不能更改,連接模式的符號可以改變"yyyy年MM月dd日 HH時mm分ss秒"
成員方法
String format(Date date)按照指定的模式,把Date日期,格式化為符合模式的字符串
Date parse(String source)把符合模式的字符串,解析為Date日期
使用這兩個成員方法及其細節(jié)
public static void main(String[] args) throws ParseException {
demo01();
demo02(); //調用的方法也會出紅線,也要光標放紅線上alt+回車選擇第一個
}
private static void demo01() {
//使用DateFormat類中的format方法,把日期格式轉化為文本
//1.創(chuàng)建SimpleDateFormat對象,構造方法中傳遞指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH時mm分ss秒");//傳入指定的模式
//2.調用SimpleDateFormat對象中的方法format,按照構造方法中指定的模式,把Date日期格式轉換為符合模式的字符串(文本)
//String format(Date date) 按照指定模式,把Date日期,格式化為符合模式的字符串
Date date =new Date(); //獲取當前系統(tǒng)時間
String format = sdf.format(date);
System.out.println(date); //Sun May 09 16:09:50 CST 2021
System.out.println(format); //2021年09月09日 16時09分50秒
}
/*
使用DateFormat類中的parse方法,把文本解析成為Date日期
1.創(chuàng)建SimpleDateFormat對象,構造方法中傳遞指定的模式
2.調用SimpleDateFormat對象中的方法parse,把符合構造方法中模式的字符串,解析為Date日期
注意:
public Date parse(String source)throws ParsejException
parse方法聲明一個異常叫ParseException
如果字符串和構造方法的模式不一樣,那么程序就會拋出異常
調用一個拋出異常的方法,就必須的處理這個異常
要么throws繼續(xù)拋出這個異常,要么try catch自己處理
出現(xiàn)紅色的線,有異常,光標放紅線上alt+回車選擇第一個;調用的方法也會出紅線,也要光標放紅線上alt+回車選擇第一個
這就是在我的方法聲明這個異常,我不處理,我聲明一下
程序沒有問題,正常執(zhí)行
出現(xiàn)問題,打印異常,并終止程序
*/
private static void demo02() throws ParseException {
//使用DateFormat類中的parse方法,把文本解析成為Date日期
//1.創(chuàng)建SimpleDateFormat對象,構造方法中傳遞指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH時mm分ss秒");//傳入指定的模式
//Date parse(String source) 把符合,模式的字符串,解析為Date日期
//2.調用SimpleDateFormat對象中的方法parse,把符合構造方法中模式的字符串,解析為Date日期
/*
出現(xiàn)紅色的線,有異常,光標放紅線上alt+回車選擇第一個;調用的方法也會出紅線,也要光標放紅線上alt+回車選擇第一個
這就是在我的方法聲明這個異常,我不處理,我聲明一下
*/
// 把字符串類型按照傳入構造模式解析成為Date類型,傳入指定模式和字符串要一樣,字符串這邊少個秒就報錯
Date parse = sdf.parse("2021年09月09日 16時09分50秒");
System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021
}
練習

public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in); // 輸入:2001-07-02
System.out.println("請輸入出生日期(格式為yyyy-mm-dd):");
String next = scanner.next(); //拿到字符串出生日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成為DAte格式
long ee = parse.getTime(); // 把Date格式的出生日期轉換為毫秒值
Date aa = new Date(); //獲取當前日期毫秒值
long hh = aa.getTime(); //把當前日期毫秒值轉換成為毫秒值
// Date aa = new Date().getTime(); 一步到位 匿名
long dd = hh-ee; //差值
long jj = dd/1000/60/60/24; //把毫秒值轉換成為天
System.out.println(jj); // 輸出:7908。 代表著 2001-07-02 到今天已經(jīng)過了7908天
// System.out.println(dd/1000/60/60/24); //一步到位
}
總結
到此這篇關于JAVA學習進階篇之時間與日期相關類的文章就介紹到這了,更多相關JAVA時間日期相關類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud學習筆記之SpringCloud搭建父工程的過程圖解
SpringCloud是分布式微服務架構的一站式解決方案,十多種微服務架構落地技術的集合體,俗稱微服務全家桶,這篇文章主要介紹了SpringCloud學習筆記(一)搭建父工程,需要的朋友可以參考下2021-10-10
spring?boot集成jasypt?并實現(xiàn)自定義加解密的詳細步驟
由于項目中的配置文件?配置的地方過多,現(xiàn)將配置文件統(tǒng)一放到nacos上集中管理?且密碼使用加密的方式放在配置文件中,配置文件的加密使用加密庫jasypt,本文給大家介紹spring boot集成jasypt并實現(xiàn)自定義加解密,感興趣的朋友一起看看吧2023-08-08

