【Java】什么?你项目还在用Date表示时间?!日期类LocalDateTime的使用
什么?你項目還在用Date表示時間?!
這都什么年代了,怎么還在用 Date來處理和表示時間!
別的先不說,我們先來看幾個關于 Date用法的例子,這玩意真的好用嗎?
一、我想新建一個表示"此刻"的日期,打印出來:
第一行:這打印結果你第一眼能看明白?可讀性忒差了
第二行:今天是2019年,你給我返回個119,沒法讀
第三行:現在是12月份,你給我返回個11,這也沒法讀
二、假如我再想構造一個指定年、月、日的時間,我嘗試這么去做:
你看到啥了,連構造函數都被棄用了!
你可以再仔細瞅瞅,其實 Date里的很多方法現在都已經棄用了!
都這樣了,你項目還敢用這個嗎?你醒醒吧!
LocalDateTime不香嗎?
自 Java8開始, JDK中其實就增加了一系列表示日期和時間的新類,最典型的就是 LocalDateTime。直言不諱,這玩意的出現就是為了干掉之前 JDK版本中的 Date老哥!
同樣,我們也先來感受一下用法!
一、獲取當前此刻的時間
干得漂亮!
二、構造一個指定年、月、日的時間:
比如,想構造:2019年10月12月12日9時21分32秒
沒毛病!
三、修改日期
夠靈活!
四、格式化日期
我無話可說,漂亮
Java8中Timestamp和LocalDateTime互轉
1.Timestamp 轉 LocalDateTime
Timestamp time = Timestamp.from(Instant.now()); LocalDateTime localDateTime = time.toLocalDateTime();2.LocalDateTime 轉 Timestamp
Timestamp time = Timestamp.valueOf(LocalDateTime.now());五、時間反解析
給你一個陌生的字符串,你可以按照你需要的格式把時間給反解出來
零零散散舉了這么些例子,我想 LocalDateTime怎么地也不輸 Date吧!
線程安全性問題!
其實上面講來講去只講了兩者在用法上的差別,這其實倒還好,并不致命,可是接下來要討論的線程安全性問題才是致命的!
其實以前我們慣用的 Date時間類是可變類,這就意味著在多線程環境下對共享 Date變量進行操作時,必須由程序員自己來保證線程安全!否則極有可能翻車。
而自 Java8開始推出的 LocalDateTime卻是線程安全的,開發人員不用再考慮并發問題,這點我們從 LocalDateTime的官方源碼中即可看出:
不說別的,就光一句:
你就沒有任何理由不用 LocalDateTime!
日期格式化的選擇
大家除了慣用 Date來表示時間之外,還有一個用于和 Date連用的 SimpleDateFormat 時間格式化類大家可能也戒不掉了!
SimpleDateFormat最主要的致命問題也是在于它本身并不線程安全,這在它的源碼注釋里已然告知過了:
那取而代之,我們現在改用什么呢?其實在前文已經用到啦,那就是了 DateTimeFormatter了,他也是線程安全的:
好了,說了這么多,如果你項目里還在使用 Date或者 SimpleDateFormat的話,答應我,二話別說,趕快全部偷偷去改掉,快!速度!跑步前進!
總結
以上是生活随笔為你收集整理的【Java】什么?你项目还在用Date表示时间?!日期类LocalDateTime的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA怎么从数据库表自动生成映射Mod
- 下一篇: java美元兑换,(Java实现) 美元