【隨筆】java中得LocalDate和LocalTime以及LocalDateTime

2020-10-12 12:00:33

java中得LocalDate和LocalTime以及LocalDateTime

提示:這裡可以新增系
提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助檔案


前言

最近用到時間類,有點忘記發現現在有一個新的時間類


概要:LocalDate和LocalTime中的大部分方法都是類似的,而LocalDateTime則是前兩者之和,同時也提供新版的時間型別格式轉換。

一、LocalDate、LocalTime、LocalDateTime

LocalDate:封裝的是當前日期,例如2020-10-9日之類的,
LocalTime:封裝的則是當前的時、分、秒和納秒等其他的時間資料
LocalDateTime:可以猜到就是,日期和時分秒之類都封裝了
DateTimeFormatter:這個是格式型別轉換的,一般用String中的format也可以實現

二、具體使用

1. 範例的建立

使用now()方法:返回當前時間

LocalDate localdate=LocalDate.now();//2020-10-09,返回預設的 
LocalDateTime localDateTime=LocalDateTime.now();//2020-10-09T17:34:15.663
LocalTime localTime=LocalTime.now();//2020-10-09

指定時間,進行建立【這裡只舉例一種方法,還可以新增其他額外的引數】

  1. 使用parse(時間)進行轉換,格式固定,注意LocalDateTime 引數中間連線的一個T,toString方法中有一個T分割開了
LocalDate l=LocalDate.parse("2020-12-01");//String型別轉換為localDate型別,中間只能是-
LocalTime l2=LocalTime.parse("10:06");//將String型別轉換為LocalTime範例,注意中間只能是是:
LocalDateTime localDateTime1=LocalDateTime.parse("2007-12-03T10:15:30");//將String型別轉換為LocalDateTime型別,注意中間的T 

2.1. 使用of(時間)進行建立

LocalDate l1=LocalDate.of(2019, 12, 12);//設定相應引數建立localDate範例,月份不用+1(不像)
LocalTime l1=LocalTime.of(18, 12);//設定引數,時和分,返回一個LocalTime範例
LocalDateTime localDateTime2=LocalDateTime.of(2020, 12, 12, 10, 11);//設定相應引數,建立LocalDateTime範例

2.2. 使用ofYearDay()進行建立

LocalDate l1_1=LocalDate.ofYearDay(2019, 123);//通過指定年份和天數,返回localData範例,結果2019-05-03

2. 一些常用的方法

相比之前的Date和Calendar,時間的運算靈活多樣

1.時間的加【plus】減min

時間的加【plus】

LocalDate l3=l2.plusDays(22);//增加22天,超過一個月的時間自動增加一個月份,年份【plusMonths、plusWeeks、plusYears】
LocalTime l4=l3.plusHours(2);//新增兩個小時

時間的減【minus】

LocalDate l4=l3.minusDays(3);//減少3天,月份不足自動減少【minusMonths、minusWeeks、minusYears】
LocalTime l5=l3.minusHours(8);//減少8個小時,l3=19:20:13。結果l5=19:20:13

2. 時間的修改【with】

LocalDate l2=l1.withYear(123);//修改年份,同時返回一個新的localDate型別,修改的年份變成0123
LocalTime l6=l4.withHour(10);//修改小時為10小時

3.時間的格式化

String s1=l.format(DateTimeFormatter.BASIC_ISO_DATE);//the formatted date string, not null 結果'20201201',中間的引數還可以修改為別的型別
String s2=l.format(DateTimeFormatter.ISO_LOCAL_DATE);//2020-12-01

自定義格式

DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("y年M月d日");//中間的y表示年份,M表示月份,d表示天
String s3=l.format(dateTimeFormatter);//轉換為String型別

在這裡插入圖片描述

總結

大部分方法都是互通的,這些只是簡單初步瞭解一些基礎用法。涉及到執行緒安全問題以及其他上的問題,以後再深入探討