溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

what?你項(xiàng)目還在用Date表示時(shí)間

發(fā)布時(shí)間:2020-08-07 20:37:21 來(lái)源:網(wǎng)絡(luò) 閱讀:478 作者:wx5d6cccb1cb158 欄目:編程語(yǔ)言

為啥會(huì)有這篇文章

最近接手了一個(gè)別人的老項(xiàng)目,拿到代碼,導(dǎo)入IDEA的那一瞬間,我哭出了聲 . . .
what?你項(xiàng)目還在用Date表示時(shí)間

我瞥了一眼代碼,就知道這次肯定遇到了屎山!因?yàn)槲铱吹搅诉@種代碼:
what?你項(xiàng)目還在用Date表示時(shí)間

我擦,這都什么年代了,怎么還在用 Date 來(lái)處理和表示時(shí)間!

完了完了 . . .
what?你項(xiàng)目還在用Date表示時(shí)間

為啥Date遭嫌棄了

別的先不說(shuō),我們先來(lái)看幾個(gè)關(guān)于 Date 用法的例子,這玩意真的好用嗎?

一、我想新建一個(gè)表示"此刻"的日期,打印出來(lái):
第一行:這打印結(jié)果你第一眼能看明白?可讀性忒差了
第二行:今天是2019年,你給我返回個(gè)119,沒(méi)法讀
第三行:現(xiàn)在是12月份,你給我返回個(gè)11,這也沒(méi)法讀
二、假如我再想構(gòu)造一個(gè) 指定年、月、日 的時(shí)間,我嘗試這么去做:
what?你項(xiàng)目還在用Date表示時(shí)間

你看到啥了,連構(gòu)造函數(shù)都 被棄用 了!

你可以再仔細(xì)瞅瞅,其實(shí) Date 里的很多方法現(xiàn)在都 已經(jīng)棄用 了!
what?你項(xiàng)目還在用Date表示時(shí)間

都這樣了,你項(xiàng)目還敢用這個(gè)嗎?你醒醒吧!
what?你項(xiàng)目還在用Date表示時(shí)間

LocalDateTime不香嗎?

自 Java8 開(kāi)始, JDK 中其實(shí)就增加了一系列表示日期和時(shí)間的新類(lèi),最典型的就是 LocalDateTime 。直言不諱,這玩意的出現(xiàn)就是為了干掉之前 JDK 版本中的 Date 老哥!

同樣,我們也先來(lái)感受一下用法!

一、獲取當(dāng)前此刻的時(shí)間

干得漂亮!
what?你項(xiàng)目還在用Date表示時(shí)間

二、構(gòu)造一個(gè)指定年、月、日 的時(shí)間:

比如,想構(gòu)造: 2019年10月12月12日9時(shí)21分32秒

沒(méi)毛??!
what?你項(xiàng)目還在用Date表示時(shí)間

三、修改日期

夠靈活!
what?你項(xiàng)目還在用Date表示時(shí)間

四、格式化日期

我無(wú)話(huà)可說(shuō),漂亮

五、時(shí)間反解析

給你一個(gè)陌生的字符串,你可以按照你需要的格式把時(shí)間給反解出來(lái)

tql!

零零散散舉了這么些例子,我想 LocalDateTime 怎么地也不輸 Date 吧!

線(xiàn)程安全性問(wèn)題!

其實(shí)上面講來(lái)講去只講了兩者在用法上的差別,這其實(shí)倒還好,并不致命,可是接下來(lái)要討論的 線(xiàn)程安全性問(wèn)題 才是致命的!

其實(shí)以前我們慣用的 Date 時(shí)間類(lèi)是可變類(lèi),這就意味著在多線(xiàn)程環(huán)境下對(duì)共享 Date 變量進(jìn)行操作時(shí),必須 由程序員自己來(lái)保證線(xiàn)程安全 !否則極有可能翻車(chē)。

而自 Java8 開(kāi)始推出的 LocalDateTime 卻是線(xiàn)程安全的,開(kāi)發(fā)人員不用再考慮并發(fā)問(wèn)題,這點(diǎn)我們從 LocalDateTime 的官方源碼中即可看出:
what?你項(xiàng)目還在用Date表示時(shí)間

不說(shuō)別的,就光一句:

你就沒(méi)有任何理由不用 LocalDateTime !

日期格式化的選擇

大家除了慣用 Date 來(lái)表示時(shí)間之外,還有一個(gè)用于和 Date 連用的 SimpleDateFormat 時(shí)間格式化類(lèi)大家可能也戒不掉了!

SimpleDateFormat 最主要的致命問(wèn)題也是在于它本身 并不線(xiàn)程安全 ,這在它的源碼注釋里已然告知過(guò)了:
what?你項(xiàng)目還在用Date表示時(shí)間

那取而代之,我們現(xiàn)在改用什么呢?其實(shí)在前文已經(jīng)用到啦,那就是了 DateTimeFormatter了,他也是線(xiàn)程安全的:
what?你項(xiàng)目還在用Date表示時(shí)間

小聲BB

好了,說(shuō)了這么多,如果你項(xiàng)目里還在使用 Date 或者 SimpleDateFormat 的話(huà),答應(yīng)我,二話(huà)別說(shuō),趕快全部偷偷去改掉,快!速度!跑步前進(jìn)!
what?你項(xiàng)目還在用Date表示時(shí)間

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI