localdatetime转化为date_LocalDateTime用法(jdk1.8 )
前言
最近看別人項目源碼,發現Java8新的日期時間API很方便強大,所以轉載該入門介紹博客,記錄一下。
使用新時間日期API的必要性
在java8以前,或許:
當你在做有關時間日期的操作時,你會想到用Date;
當你在做日期、月份、天數相加減時,你會想到用Calendar;
當你需要對時間日期進行格式化時,你會想到使用SimpleDateFormat或DateFormat下的其他子類;
……
但是,你必須知道,以上有關的時間日期操作對象,都是可變的、線程不安全的,同時,如果作為一個經常寫過類似代碼的人來說,盡管有相關對象提供某些操作,但并不能很快、很簡單的就能得到最終想要的結果,如:要計算兩個時間點之間相差的年、月、日、周、時、分、秒等,這些計算盡管原有API也能夠實現,但原有API除了線程不安全之外,另外一個不足之處就是代碼繁瑣,性能低!
為何我們總提多線程下,線程不安全?對于初學者來說,可能覺得能夠簡單實現出功能就已經足夠,但是真正的開發項目是不可能僅僅考慮功能的實現的,還要考慮項目的安全性、穩定性、高性能、高可用性等等!因此,作為java開發者,多線程的知識是必不可少的。而也正因為多線程,才會出現一大堆問題(簡稱線程安全性問題),作為開發者,就應該寫出不僅能實現功能的代碼,還要是線程安全的代碼。那么,學習并熟悉掌握新的線程安全的API就顯得非常重要了!
沒錯,java8出的新的時間日期API都是線程安全的,并且性能更好,代碼更簡潔!
新時間日期API常用、重要對象介紹
ZoneId: 時區ID,用來確定Instant和LocalDateTime互相轉換的規則
Instant: 用來表示時間線上的一個點(瞬時)
LocalDate: 表示沒有時區的日期, LocalDate是不可變并且線程安全的
LocalTime: 表示沒有時區的時間, LocalTime是不可變并且線程安全的
LocalDateTime: 表示沒有時區的日期時間, LocalDateTime是不可變并且線程安全的
Clock: 用于訪問當前時刻、日期、時間,用到時區
Duration: 用秒和納秒表示時間的數量(長短),用于計算兩個日期的“時間”間隔
Period: 用于計算兩個“日期”間隔
其中,LocalDate、LocalTime、LocalDateTime是新API里的基礎對象,絕大多數操作都是圍繞這幾個對象來進行的,有必要搞清楚:
LocalDate : 只含年月日的日期對象
LocalTime :只含時分秒的時間對象
LocalDateTime : 同時含有年月日時分秒的日期對象
本文將以實例講解日常開發中常用到的時間日期操作,如:
獲取當前日期、時間
指定時間日期創建對應的對象
計算兩個時間點的間隔
判斷兩個時間的前后
時間日期的格式化
獲取時間戳
時間、日期相加減
獲取給定時間點的年份、月份、周、星期等
……
新時間日期API詳解與示例
獲取當前時間
運行結果:
image.png
根據指定日期/時間創建對象
運行結果:
image.png
日期時間的加減
對于LocalDate,只有精度大于或等于日的加減,如年、月、日;
對于LocalTime,只有精度小于或等于時的加減,如時、分、秒、納秒;
對于LocalDateTime,則可以進行任意精度的時間相加減;
運行結果:
image.png
將年、月、日等修改為指定的值,并返回新的日期(時間)對象
析: 其效果與時間日期相加減差不多,如今天是2018-01-13,要想變為2018-01-20有兩種方式
a. localDate.plusDays(20L) -> 相加指定的天數
b. localDate.withDayOfYear(20) -> 直接指定到哪一天
運行結果:
image.png
獲取日期的年月日周時分秒
運行結果:
image.png
時間日期前后的比較與判斷
判斷是否為閏年
java8時鐘 : clock()
時間戳
事實上Instant就是java8以前的Date,
可以使用以下兩個類中的方法在這兩個類型之間進行轉換,
比如Date.from(Instant)就是用來把Instant轉換成java.util.date的,
而new Date().toInstant()就是將Date轉換成Instant的
計算時間、日期間隔
Duration:用于計算兩個“時間”間隔
Period:用于計算兩個“日期”間隔
運行結果:
image.png
當計算程序的運行時間時,應當使用時間戳Instant
時間日期的格式化(格式化后返回的類型是String)
1. 使用jdk自身配置好的日期格式
運行結果:
image.png
2. 使用自定義格式
運行結果:
image.png
注:自定義轉化的格式一定要與日期類型對應
LocalDate只能設置僅含年月日的格式
LocalTime只能設置僅含時分秒的格式
LocalDateTime可以設置含年月日時分秒的格式
代碼如下:
運行結果:
image.png
將時間字符串形式轉化為日期對象
運行結果:
image.png
注:格式的寫法必須與字符串的形式一樣
2018-01-13 21:27:30 對應 yyyy-MM-dd HH:mm:ss
20180113213328 對應 yyyyMMddHHmmss
否則會報運行時異常!
但要記住:得到的最終結果都是類似2018-01-13T21:27:30的格式
因為在輸出LocalDateTime對象時,會調用其重寫的toString方法。
將時間日期對象轉為格式化后的時間日期對象
運行結果:
image.png
long毫秒值轉換為日期
運行結果:
總結
以上是生活随笔為你收集整理的localdatetime转化为date_LocalDateTime用法(jdk1.8 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据存储用什么_Python
- 下一篇: 成都大熊猫基地忘记带学生证