成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實(shí)體類不要再用Date了,JDK8有新的時(shí)間

開(kāi)發(fā) 前端
我們?cè)谥笆褂肑DK7創(chuàng)建時(shí)間的時(shí)候,很多時(shí)候都選擇的時(shí)比較老版本的 Date、Calendar 以及 SimpleDateFormatter 等等,而我們接下來(lái)要使用的,就是 JDK8 中的日期,用來(lái)替換掉之前使用的。

阿粉今天想介紹的,就是我們?cè)賹?shí)體類中,很多時(shí)候會(huì)用到時(shí)間這個(gè)概念,比如說(shuō),記錄的創(chuàng)建時(shí)間Create_Time或者說(shuō)是某些需要確定的日期,在數(shù)據(jù)庫(kù)存儲(chǔ)的時(shí)候,毋庸置疑,肯定是 datetime和date的數(shù)據(jù)類型,但是也有個(gè)別的比較過(guò)分,直接是用字符串,也就是varchar來(lái)進(jìn)行存儲(chǔ),而我們?cè)谥笆褂肑DK7創(chuàng)建時(shí)間的時(shí)候,很多時(shí)候都選擇的時(shí)比較老版本的 Date、Calendar 以及 SimpleDateFormatter 等等。

不過(guò) java.util.Date 也是被詬病已久,它包含了日期、時(shí)間、毫秒數(shù)等眾多繁雜的信息,其內(nèi)部利用午夜 12 點(diǎn)來(lái)區(qū)分日期,利用 1970-01-01 來(lái)計(jì)算時(shí)間;并且其月份從 0 開(kāi)始計(jì)數(shù),而且用于獲得年、月、日等信息的接口也是太不直觀。

除此之外,java.util.Date與 SimpleDateFormatter 都不是類型安全的,

而我們接下來(lái)要使用的,就是 JDK8 中的日期,用來(lái)替換掉之前使用的。

JDK7 的日期 和 JDK8 的日期對(duì)比

JDK7 創(chuàng)建一個(gè)時(shí)間:

Date date0 = new Date();

JDK8 創(chuàng)建一個(gè)時(shí)間:

LocalDate today = LocalDate.now();

我們先看看這執(zhí)行出來(lái)都是啥?

Date輸出:

Wed Apr 13 13:19:06 CST 2022

LocalDate輸出:

2022-04-13

首先我們從輸出上,直接就感覺(jué)有點(diǎn)難受,Date輸出的看起來(lái)就不是那么的直觀,所以,當(dāng)你想要直觀的去輸出這個(gè)時(shí)間的時(shí)候,可能就得用到 SimpleDateFormat 去格式化一下我們的這個(gè)時(shí)間。但是如果是用 LocalDate 就不會(huì)有這種顧慮了。

Date格式化:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時(shí)mm分ss秒");
String str = sdf.format(date0);

我們執(zhí)行一下在看:

JDK7格式化后的時(shí)間數(shù)據(jù)==2022-04-13
JDK8的時(shí)間數(shù)據(jù)==2022-04-13

首先,從代碼上,就直接少了很多,畢竟轉(zhuǎn)換時(shí)間相對(duì)來(lái)說(shuō)是非常簡(jiǎn)單的。

這時(shí)候就有人得噴阿粉,說(shuō)如果我不想要這樣的數(shù)據(jù),那么我再JDK8 里面我怎么去轉(zhuǎn)換這個(gè)時(shí)間呢?

我 JDK7 可以用 SimpleDateFormat,但是這個(gè)類并不支持我用 LocalDate 呀,別著急呀。既然人家敢出這個(gè),那么肯定也得想到對(duì)應(yīng)的方案。

JDK1.7及之前版本我們使用java.text.DataFormat 的子類(如SimpleDateFormat類)進(jìn)行日期時(shí)間的格式化。

JDK1.8之后我們可以使用 java.time.format.DateTimeFormatter來(lái)進(jìn)行日期時(shí)間的格式化。

 LocalDate now = LocalDate.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");

String JDK8Time = now.format(dateTimeFormatter);
System.out.println("JDK8格式化后的時(shí)間數(shù)據(jù)=="+JDK8Time);

我們看一下輸出結(jié)果:

JDK7格式化后的時(shí)間數(shù)據(jù)==2022/04/13
JDK8格式化后的時(shí)間數(shù)據(jù)==2022/04/13

這屬實(shí)沒(méi)毛病是吧,但是,眾所周知,SimpleDateFormat 是個(gè)線程不安全的,使用的時(shí)候,只能在方法內(nèi)部創(chuàng)建新的局部變量。

而 DateTimeFormatter 不但是不變對(duì)象,它還是線程安全的。所以 DateTimeFormatter 可以只創(chuàng)建一個(gè)實(shí)例,到處引用。

這就是阿粉推薦大家換一下的原因,因?yàn)樽址D(zhuǎn)換時(shí)間的例子,用的地方實(shí)在是非常的多,我們?cè)谕瓿晒δ艿耐瑫r(shí),也需要盡量的保證自己代碼的安全。

我們既然已經(jīng)對(duì)比完成了,接下來(lái)就直接講一下 JDK8 中的各種時(shí)間的用法。畢竟沒(méi)有實(shí)戰(zhàn)的空說(shuō),都是讓人難以記憶的。

JDK8 日期的各種用法

String 轉(zhuǎn) LocalDate:

LocalDate localDate = LocalDate.now();

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");

String dateStr = localDate.format(fmt);

System.out.println("LocalDate轉(zhuǎn)String:" + dateStr);

轉(zhuǎn)換結(jié)果:

LocalDate轉(zhuǎn)String:2022/04/14

data轉(zhuǎn)LocalDate:

Date date = new Date();

System.out.println("LocalDateTime():" + (new Date()).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());

轉(zhuǎn)換結(jié)果:

LocalDateTime():2022-04-14T10:07:52.868

時(shí)間戳轉(zhuǎn)LocalDateTime:


long timestamp = System.currentTimeMillis();

Instant instant1 = Instant.ofEpochMilli(timestamp);

System.out.println("時(shí)間戳 轉(zhuǎn) LocalDateTime:" + LocalDateTime.ofInstant(instant1, ZoneId.systemDefault()));

轉(zhuǎn)換結(jié)果:

時(shí)間戳 轉(zhuǎn) LocalDateTime:2022-04-14T10:09:14.780

具體的API還有很多很多阿粉列舉一下:

以上的API相對(duì)來(lái)說(shuō)已經(jīng)是比較全免的,可以滿足日常開(kāi)發(fā)的需求了,阿粉就不再一一的去測(cè)試了,如果是想看看結(jié)果的,大家不妨寫(xiě)個(gè)測(cè)試 Demo 去試試吧。

責(zé)任編輯:趙寧寧 來(lái)源: Java極客技術(shù)
相關(guān)推薦

2022-03-01 07:37:30

MySQL場(chǎng)景框架

2022-03-30 07:32:10

JDK8異步編程

2021-08-07 07:48:28

JDKjava JDK17

2022-05-31 07:32:19

JDK8API工具

2009-09-10 10:09:46

LINQ to SQL

2022-04-21 09:48:54

JDK8JDK7編碼

2022-04-21 07:34:34

JDK8JDK7數(shù)據(jù)

2022-07-22 09:15:07

OpitonalJava代碼

2017-03-09 10:45:31

定義內(nèi)存泄漏

2024-05-16 08:28:20

類型處理器D3BootJSON

2024-06-27 08:36:12

Lodash對(duì)象類型isObject?

2023-06-28 16:03:44

2020-04-22 10:35:57

實(shí)體類屬性映射

2021-01-15 10:03:18

JDK8日期API

2020-12-02 11:18:50

print調(diào)試代碼Python

2020-12-04 10:05:00

Pythonprint代碼

2021-05-19 10:37:16

WebFlux 前置工具

2025-05-19 04:00:00

2011-06-01 15:45:28

實(shí)體類序列化

2023-01-04 08:53:52

JPA實(shí)體類注解
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品1区 | 国产成人精品久久二区二区 | 日韩欧美国产不卡 | 成人在线视频一区 | 国产福利在线 | 亚洲精品一区二区冲田杏梨 | 九色 在线 | 国产性网 | 欧美一区二区在线看 | 欧美日韩亚 | 超碰91在线 | 中文字幕国产精品 | 在线一区二区三区 | 国产999精品久久久 精品三级在线观看 | 不卡av电影在线播放 | 国产精品国产亚洲精品看不卡15 | 日本国产高清 | 国产91视频播放 | 国产成人免费视频网站视频社区 | 亚洲人成人网 | 欧美视频 | 黄色三级免费 | 欧美精品福利 | 91超碰caoporn97人人 | 国产性网 | 日韩高清一区 | 成人乱人乱一区二区三区软件 | www日| 草在线| 日韩欧美不卡 | 亚洲成人精品在线 | 国产男女精品 | 日日爱视频 | 欧洲一区二区在线 | 一区二区成人 | 婷婷久久一区 | 国产欧美在线观看 | 99re| 欧美精品在欧美一区二区 | 久久中文字幕一区 | 成年人的视频免费观看 |