日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

构造一个日期类java_Java8 新日期时间类(1)

發布時間:2025/7/14 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构造一个日期类java_Java8 新日期时间类(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java.time 包的優勢

使用Java8,新的日期時間API引入覆蓋舊的日期時間API的以下缺點。

非線程安全 - java.util.Date不是線程安全的,因此開發者必須在使用日期處理并發性問題。新的日期時間API是不可變的,并且沒有setter方法。? 設計不佳 - 默認的開始日期從1900年,開始每月從1天從0開始,所以沒有統一。不直接使用方法操作日期。新的API提供了這樣操作實用方法。? 困難的時區處理 - 開發人員必須編寫大量的代碼來處理時區的問題。新的API設計開發保持特定領域設計。

JAVA8引入了 java.time 包 - 下一個新的日期時間API。以下是一些在java.time程序包引入重要的類。

本地 - 簡化日期時間API,沒有時間處理區的復雜性。? 時區 - 專業的日期時間API來處理各種時區。

java.time 本地日期時間類

java.time處理本地日期時間的主要類為

LocalDateTime,LocalDate,LocalTime;

LocalDateTime可以處理日期時間,可以看做作為LocalDate,LocalTime的復合; LocalDate主要處理日期(year,month,day,week); LocalTime主要處理時間(h,m,s)

LocalDateTime

靜態構造方式摘要 static LocalDateTime? static LocalDateTime? ? ?static LocalDateTime static LocalDateTime now() of(int year,int month,int dayofMonth,int hour,int minute[,int second[,int nanoSeconds]] ) parse(CharSequence text) ofEpochSecond(long epochSeconds,int nanoSeconds,ZoneOffset offset)? 使用當前時間構造一個LocalDateTime對象 使用指定的數值創建一個LocalDateTime對象 (year,month,day從1開始,hour,min,second從0開始)? 使用形如 “2017-2-28T13:29:30”的格式創建對象 使用紀元流逝秒創建對象,起點為 1970-1-1T00:00:00,offset一般使用ZoneOffset.UTF 成員方法摘要 +LocalDate +LocalTime +ZoneDateTime? +LocalDateTime +int +LocalDateTime? ?+String? toLocalDate() toLocalTime() atZone()? with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)? toString() 獲取該對象的 LocalDate對象 獲取該對象的 LocalTime對象 獲取該對象的 ZoneDateTime對象? 修改LocalDateTime的時間數值參數(可以鏈式調用) 獲取LocalDateTime的時間數值參數 對LocalDateTime的某個時間參數值的流逝量? ?字符串格式:2017-2-28T13:29:30

注:localDateTime的 with,get,plus 方法,都有單項filed的實現? with[Filed](int filed),如 withDayOfMonth(int days),主要Field值如下:

with,get:? ?year,month,dayOfMonth,hour,minute,second,dayOfYear; plus :? ? years,months,weeks,days,hours,minutes,seconds,nanos;

LocalDate

靜態構造方式摘要 static LocalDate? static LocalDate? ? static LocalDate static LocalDate static LocalDate now() of(int year,int month[,int dayofMonth] )? parse(CharSequence text) ofEpochDay(long epochDay) ofYearDay(int year,int dayOfyear) 使用當前時間構造一個LocalDate對象 使用指定的數值創建一個LocalDate對象? ?使用形如 “2017-2-28”的格式創建對象 使用紀元流逝天數創建對象 指定年份,使用一年的總天數創建對象 成員方法摘要 +LocalDateTime +LocalDateTime +ZoneDateTime? +LocalDateTime +int +LocalDateTime? ?+String? asStartOfDay() atTime(int hour,int minute[,int second]) atZone()? with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)? toString() 獲取該對象的 LocalDateTime對象(time值歸零) 使用指定time值,創建LocalDateTime對象 獲取該對象的 ZoneDateTime對象? 修改LocalDate的時間數值參數(可以鏈式調用) 獲取LocalDate的時間數值參數 對LocalDate的某個時間參數值的流逝量? ?字符串格式:2017-2-28

注:同LocalDateTime ,LocalDate的 with,get,plus 方法,也都有單項filed的實現? with[Filed](int filed),主要Field值如下:

with,get:? ?year,month,dayOfMonth,dayOfYear; plus :? ? years,months,weeks,days;

LocalTime

靜態構造方式摘要 static LocalTime? static LocalTime? ? static LocalTime static LocalTime static LocalTime now() of(int hour,int minute[,int dayofMonth] )? parse(CharSequence text) ofSecondOfDay(long seconds) ofNanoOfDay(long nanoSeconds) 使用當前時間構造一個LocalDate對象 使用指定的數值創建一個LocalDate對象? ?使用形如 “2017-2-28”的格式創建對象 使用指定seconds創建對象 使用指定nanoSeconds創建對象 成員方法摘要 +LocalDateTime? +LocalTime +int +LocalTime? ?+int +int +String? atDate(LocalDate date)? with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)? toSecondOfDay() toNanoOfDay() toString() 于一個LocalDate對象創建一個LocalDateTime對象? 修改LocalTime的時間數值參數(可以鏈式調用) 獲取LocalTime的時間數值參數 對LocalTime的某個時間參數值的流逝量? ?獲取總Second參數 獲取總Nano參數 字符串格式:10:15:00

注:同LocalDateTime ,LocalTime的 with,get,plus 方法,也都有單項filed的實現? with[Filed](int filed),主要Field值如下:

with,get:? ?hour,minute,second; plus :? ? hours,minutes,seconds,nanos;

LocalDateTime,LocalDate,LocalTime都實現了compareTo,equals方法; with,get方法中,實現 TemporalField 接口的類:java.time.temporal.ChronoField; plus方法中,實現 TemporalAmout 接口的類:java.time.Duration,java.time.Peroid

實現

TemporalUnit

接口的類:java.time.temporal.

ChronoUnit

ChronoField、

ChronoUnit常量摘要

ChronoField ChronoUnit YEAR? ? ? ? ? ? ? ? ? ? MONTH_OF_YEAR? ? ? ? DAY_OF_MONTH DAY_OF_WEEK DAY_OF_YEAR? ? ? ? ? HOUR_OF_DAY? ? ?24小時制hour HOUR_OF_AMPM? ? 12小時制hour AMPM_OF_DAY? ? ?0(AM),1(PM)? MINUTE_OF_HOUR MINUTE_OF_DAY SECOND_OF_MINUTE SECOND_OF_OF_DAY? OFFSET_SECOND? ? ?UTF流逝秒數 MILLI_OF_SECOND MILLI_OF_DAY NANO_OF_SECOND NANO_OF_DAY? FOREVER? ? ?CENTURIES? YEARS MONTHS WEEKS DAYS? HOURS MINUTES SECONDS NANOS

使用示例

import java.time.*;import java.time.temporal.ChronoField;import java.time.temporal.ChronoUnit;.....//構建LocalDateTime? ? ? ? LocalDateTime dateTime1 = LocalDateTime.now();? ? ? ? LocalDateTime dateTime2? = LocalDateTime.of(2017,1,1,0,0,0);? ? ? ? System.out.println("datetime1:"+dateTime1+"\ndatetime2:"+dateTime2);

//修改LocalDateTime數值? ? ? ? LocalDateTime dateTime3 = dateTime1.with(ChronoField.YEAR,1992).with(ChronoField.MONTH_OF_YEAR,9).with(ChronoField.DAY_OF_MONTH,16);? ? ? ? System.out.println("datetime3:"+dateTime3);

//獲取LocalDateTime數值? ? ? ? int year_dateTime3 = dateTime3.get(ChronoField.YEAR);? ? ? ? Month month_dateTime3 = dateTime3.getMonth();? ? ? ? int day_dateTime3 = dateTime3.get(ChronoField.DAY_OF_MONTH);? ? ? ? System.out.println("year:"+year_dateTime3+"\nmonth:"+month_dateTime3+"\nday:"+day_dateTime3);

//對LocalDateTime進行數值增減? ? ? ? LocalDateTime dateTime4 = dateTime3.plus(10,ChronoUnit.MONTHS).plusDays(100).plusHours(120);? ? ? ? System.out.println("datetime4:"+dateTime4);? ? ? ? System.out.println("datetime4:"+dateTime4.toEpochSecond(ZoneOffset.UTC));

//將LocalDateTime裝載到LocalDate和LocalTime? ? ? ? LocalDate date1 = dateTime4.toLocalDate();? ? ? ? LocalTime time1 = dateTime4.toLocalTime();? ? ? ? System.out.println("date1:"+date1);? ? ? ? System.out.println("time1:"+time1);

輸出結果:

datetime1:2017-02-28T19:42:09.550datetime2:2017-01-01T00:00datetime3:1992-09-16T19:42:09.550year:1992month:SEPTEMBERday:16datetime4:1993-10-29T19:42:09.550datetime4:751923729date1:1993-10-29time1:19:42:09.550

總結

以上是生活随笔為你收集整理的构造一个日期类java_Java8 新日期时间类(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。