java8日期工具類封裝的實(shí)戰(zhàn)記錄
前言
java現(xiàn)在應(yīng)該是更新到16了,想想我當(dāng)年剛參加工作的時(shí)候。普遍還都是java7,那時(shí)候沒有SpringBoot,沒有springCloud,沒有我的那個(gè)她 哈哈,扯的有點(diǎn)遠(yuǎn)了,拉回正題
今天我們聊聊java的日期類的一些騷操作
在Java 8中如何處理日期和時(shí)間
Java 8 中的 LocalDate 用于表示當(dāng)天日期。和java.util.Date不同,它只有日期,不包含時(shí)間。當(dāng)你僅需要表示日期時(shí)就用這個(gè)類。
LocalDate today = LocalDate.now(); System.out.println("Today's Local date : " + today); Today's Local date : 2021-08-27
那接下來比如我們獲取具體的年月日
LocalDate today = LocalDate.now(); int year = today.getYear(); int month = today.getMonthValue(); int day = today.getDayOfMonth(); System.out.printf("Year="+year + "month =" +month + "day ="+day); Year=2021month = 8day=27
那肯定有小伙伴問了,那比如我們平時(shí)工作過程中怎么指定格式化日期呢?
在上面第一個(gè)例子里,我們通過靜態(tài)工廠方法now()非常容易地創(chuàng)建了當(dāng)天日期,你還可以調(diào)用另一個(gè)有用的工廠方法LocalDate.of()創(chuàng)建任意日期, 該方法需要傳入年、月、日做參數(shù),返回對應(yīng)的LocalDate實(shí)例。
LocalDate yearAndMonthDay = LocalDate.of(2021, 08, 27); System.out.println("yearAndMonthDay is : " + yearAndMonthDay); yearAndMonthDay is : 2021-08-27
先介紹這幾種,下面給出自己再封裝的一些常用方法
再封裝
下面我是在平常過程當(dāng)中簡單寫了幾個(gè)工具方法
** * java 8 日期工具類再封裝 * 盡量用java8的工具類操作日期 * @Date 2021/6/2 4:01 下午 * @Author yn */ @Component public class LocalDateUtil { /** * 比較第一個(gè)日期是否小于第二個(gè)日期 * @param firstDate 第一個(gè)日期 * @param secondDate 第二個(gè)日期 * @return true-小于;false-大于 */ public static boolean localDateIsBefore(LocalDate firstDate, LocalDate secondDate) { return firstDate.isBefore(secondDate); } /** * 比較第一個(gè)日期是否大于第二個(gè)日期 * @param firstDate 第一個(gè)日期 * @param secondDate 第二個(gè)日期 * @return true-大于;false-不大于 */ public static boolean localDateIsAfter(LocalDate firstDate, LocalDate secondDate) { return firstDate.isAfter(secondDate); } /** * 比較兩個(gè)日期是否相等 * @param firstDate 第一個(gè)日期 * @param secondDate 第二個(gè)日期 * @return true-相等;false-不相等 */ public static boolean localDateIsEqual(LocalDate firstDate, LocalDate secondDate) { return firstDate.isEqual(secondDate); } /** * 字符串轉(zhuǎn)換datetime * @param dateTime * @return yyyy-MM-dd HH:mm:ss */ public static Date stringCoverDateTime(String dateTime){ LocalDateTime startDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); Date LocalDateTimeToDate = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()); return LocalDateTimeToDate; } /** * 字符串轉(zhuǎn)換date * @param dateTime * @return yyyy-MM-dd */ public static Date stringCoverDate(String dateTime){ LocalDateTime startDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd")); Date LocalDateTimeToDate = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()); return LocalDateTimeToDate; } }
Java8新增的日期、時(shí)間包
為了彌補(bǔ)傳統(tǒng)Java對日期、時(shí)間處理的不足,Java8提供了一套全新的日期時(shí)間庫。Java8專門新增了一個(gè)java.time包,該包下包含了如下常用類。(各位小伙伴可以去該包下面看下)
- Clock:該類用于獲取指定時(shí)區(qū)的當(dāng)前日期、時(shí)間。該類可以取代System類的currentTimeMillis()方法,該類提供了大量的方法獲取當(dāng)前的日期和時(shí)間
- Duration:該類代表持續(xù)時(shí)間
- Instant:該類代表一個(gè)具體的時(shí)刻,可以精確到納秒。該類主要提供了以下幾個(gè)方法:
1)now():獲取當(dāng)前時(shí)刻。
2)now(Clock clock):獲取clock對應(yīng)的時(shí)刻。
3)minusXxx():在當(dāng)前時(shí)刻基礎(chǔ)上減去一段時(shí)間。
4)plusXxx():在當(dāng)前時(shí)刻基礎(chǔ)上加上一段時(shí)間。
- LocalDate:該類代表不帶時(shí)區(qū)的日期,如:2021-08-27
- LocalTime:該類代表不帶時(shí)區(qū)的時(shí)間,如:10:20:09
- LocalDateTime:該類代表不帶時(shí)區(qū)的日期、時(shí)間,如:2021-08-27T10:20:09。
- ZonedDateTime:該類代表一個(gè)時(shí)區(qū)化的日期、時(shí)間。
- ZonedId:該類代表一個(gè)時(shí)區(qū)。
- DayOfWeek:該類是一個(gè)枚舉類,定義了周日到周六的枚舉值。
- Month:該類是一個(gè)枚舉類,定義了一月到十二月的枚舉值。
OK。java8的日期的類先介紹到這里
總結(jié)
我們應(yīng)該學(xué)會總結(jié),java的每一次迭代 都會更新呢一些有利于我們開發(fā)的工具類,我們在日常開發(fā)中,要學(xué)會利用并總結(jié)出一套提高開發(fā)效率的一種東西
到此這篇關(guān)于java8日期工具類封裝的文章就介紹到這了,更多相關(guān)java8日期工具類封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 和 JavaScript 真正通用的Base64編碼詳解
這篇文章主要介紹了Java 和 JavaScript 真正通用的Base64編碼詳解的相關(guān)資料,附有Java和Javascript 的Base64編碼,需要的朋友可以參考下2016-11-11springboot集成mybatis-maven插件自動(dòng)生成pojo的詳細(xì)教程
這篇文章主要介紹了springboot集成mybatis-maven插件自動(dòng)生成pojo的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化
這篇文章主要介紹了SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化,使用Jackson消息轉(zhuǎn)換器,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-12-12Swagger2配置Security授權(quán)認(rèn)證全過程
這篇文章主要介紹了Swagger2配置Security授權(quán)認(rèn)證全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03logback-spring.xml的配置及示例詳解(直接復(fù)制粘貼可用)
在使用logback作為日志框架時(shí),可以創(chuàng)建一個(gè)名為logback-spring.xml的配置文件來自定義日志輸出的格式和方式,下面這篇文章主要給大家介紹了關(guān)于logback-spring.xml的配置及示例詳解的相關(guān)資料,文中的代碼直接復(fù)制粘貼可用,需要的朋友可以參考下2024-01-01Java通過Fork/Join優(yōu)化并行計(jì)算
這篇文章主要為大家詳細(xì)介紹了Java通過Fork、Join來優(yōu)化并行計(jì)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04