最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 8新時間日期庫java.time的使用示例

 更新時間:2020年07月19日 15:42:40   投稿:daisy  
這篇文章主要給你大家介紹了關于Java 8新時間日期庫java.time的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
  • Instant——它代表的是時間戳
  • LocalDate——不包含具體時間的日期,比如 2020-01-14。它可以用來存儲生日,周年紀念日,入職日期等。
  • LocalTime——它代表的是不含日期的時間
  • LocalDateTime——它包含了日期及時間,不過還是沒有偏移信息或者說時區(qū)。
  • ZonedDateTime——這是一個包含時區(qū)的完整的日期時間,偏移量是以 UTC / 格林威治時間為基準的。

Java 8 是如何處理時間及日期的

示例 1 如何 在 Java 8 中獲取當天的日期

LocalDate today = LocalDate.now(); 
System.out.println("Today's Local date : " + today); 

Output 
Today's Local date : 2020-01-14

示例 2 如何在 Java 8 中獲取當前的年月日

LocalDate today = LocalDate.now(); 
int year = today.getYear(); 
int month = today.getMonthValue(); 
int day = today.getDayOfMonth(); 
System.out.printf("Year : %d Month : %d day : %d \t %n", year, month, day); 

Output 
Today's Local date : 2020-01-14 
Year : 2020 Month : 1 day : 14

示例 3 在 Java 8 中如何獲取某個特定的日期

LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); 
System.out.println("Your Date of birth is : " + dateOfBirth); 

Output : Your Date of birth is : 2010-01-14

示例 4 在 Java 8 中如何檢查兩個日期是否相等

LocalDate date1 = LocalDate.of(2020, 01, 14); if(date1.equals(today)){ 
 System.out.printf("Today %s and date1 %s are same date %n", today, date1); 
} 

Output 
today 2020-01-14 and date1 2020-01-14 are same date

示例 5 在 Java 8 中如何檢查重復事件,比如說生日

LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); 
MonthDay birthday = MonthDay.of(dateOfBirth.getMonth(), dateOfBirth.getDayOfMonth()); 
MonthDay currentMonthDay = MonthDay.from(today); 
if(currentMonthDay.equals(birthday)){ 
 System.out.println("Many Many happy returns of the day !!"); 
}else{ 
 System.out.println("Sorry, today is not your birthday"); 
} 

Output: Many Many happy returns of the day !!

示例 6 如何在 Java 8 中獲取當前時間

LocalTime time = LocalTime.now(); 
System.out.println("local time now : " + time);

Output 
local time now : 16:33:33.369 // in hour, minutes, seconds, nano seconds

示例 7 如何增加時間里面的小時數

LocalTime time = LocalTime.now(); 
LocalTime newTime = time.plusHours(2); // adding two hours 
System.out.println("Time after 2 hours : " + newTime); 

Output : 
Time after 2 hours : 18:33:33.369

示例 8 如何獲取 1 周后的日期

LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS); 
System.out.println("Today is : " + today); 
System.out.println("Date after 1 week : " + nextWeek); 

Output: 
Today is : 2020-01-14 
Date after 1 week : 2020-01-21

示例 9 一年前后的日期

LocalDate previousYear = today.minus(1, ChronoUnit.YEARS); 
System.out.println("Date before 1 year : " + previousYear); 
LocalDate nextYear = today.plus(1, YEARS); 
System.out.println("Date after 1 year : " + nextYear);

Output: 
Date before 1 year : 2019-01-14 
Date after 1 year : 2021-01-14

示例 10 在 Java 8 中使用時鐘

// Returns the current time based on your system clock and set to UTC. 
Clock clock = Clock.systemUTC(); 
System.out.println("Clock : " + clock);

// Returns time based on system clock zone Clock defaultClock = 
Clock.systemDefaultZone(); 
System.out.println("Clock : " + clock);

Output: 
Clock : SystemClock[Z] 
Clock : SystemClock[Z]
public class MyClass { 
 private Clock clock; // dependency inject ...

 public void process(LocalDate eventDate) {

 if(eventDate.isBefore(LocalDate.now(clock)) { 
  ... 
 } 
 } 
}

示例 11 在 Java 中如何判斷某個日期是在另一個日期的前面還是后面

LocalDate tomorrow = LocalDate.of(2020, 1, 15);
if(tommorow.isAfter(today)){ 
 System.out.println("Tomorrow comes after today"); 
} 
LocalDate yesterday = today.minus(1, DAYS); 
if(yesterday.isBefore(today)){ 
 System.out.println("Yesterday is day before today"); 
}

Output: 
Tomorrow comes after today 
Yesterday is day before today

示例 12 在 Java 8 中處理不同的時區(qū)

// Date and time with timezone in Java 8 ZoneId america = ZoneId.of("America/New_York"); 
LocalDateTime localtDateAndTime = LocalDateTime.now(); 
ZonedDateTime dateAndTimeInNewYork = ZonedDateTime.of(localtDateAndTime, america ); 
System.out.println("Current date and time in a particular timezone : " + dateAndTimeInNewYork);

Output : 
Current date and time in a particular timezone : 2020-01-14T16:33:33.373-05:00[America/New_York]
Exception in thread "main" java.time.zone.ZoneRulesException: Unknown time-zone ID: ASIA/Tokyo
 at java.time.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:272)
 at java.time.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:227)
 at java.time.ZoneRegion.ofId(ZoneRegion.java:120)
 at java.time.ZoneId.of(ZoneId.java:403)
 at java.time.ZoneId.of(ZoneId.java:351)

示例 13 如何表示固定的日期,比如信用卡過期時間

YearMonth currentYearMonth = YearMonth.now(); 
System.out.printf("Days in month year %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth()); 
YearMonth creditCardExpiry = YearMonth.of(2018, Month.FEBRUARY); 
System.out.printf("Your credit card expires on %s %n", creditCardExpiry);

Output: 
Days in month year 2020-01: 31 
Your credit card expires on 2018-02

示例 14 如何在 Java 8 中檢查閏年

if(today.isLeapYear()){ 
 System.out.println("This year is Leap year"); 
}else { 
 System.out.println("2020 is not a Leap year"); 
}

Output: 2020 is not a Leap year

示例 15 兩個日期之間包含多少天,多少個月

LocalDate java8Release = LocalDate.of(2020, Month.MARCH, 14); 
Period periodToNextJavaRelease = Period.between(today, java8Release); 
System.out.println("Months left between today and Java 8 release : " + periodToNextJavaRelease.getMonths() );

Output: 
Months left between today and Java 8 release : 2

示例 16 帶時區(qū)偏移量的日期與時間

LocalDateTime datetime = LocalDateTime.of(2020, Month.JANUARY, 14, 19, 30); 
ZoneOffset offset = ZoneOffset.of("+05:30"); 
OffsetDateTime date = OffsetDateTime.of(datetime, offset); 
System.out.println("Date and Time with timezone offset in Java : " + date);

Output : 
Date and Time with timezone offset in Java : 2020-01-14T19:30+05:30

示例 17 在 Java 8 中如何獲取當前時間戳

Instant timestamp = Instant.now(); 
System.out.println("What is value of this instant " + timestamp);

Output : 
What is value of this instant 2020-01-14T08:33:33.379Z

示例 18 如何在 Java 8 中使用預定義的格式器來對日期進行解析 / 格式化

String dayAfterTommorrow = "20200116"; 
LocalDate formatted = LocalDate.parse(dayAfterTommorrow, 
DateTimeFormatter.BASIC_ISO_DATE); 
System.out.printf("Date generated from String %s is %s %n", dayAfterTommorrow, formatted);

Output : 
Date generated from String 20200116 is 2020-01-16

示例 19 如何在 Java 中使用自定義的格式器來解析日期

String goodFriday = "Apr 18 2020"; 
try { 
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd yyyy"); 
 LocalDate holiday = LocalDate.parse(goodFriday, formatter); 
 System.out.printf("Successfully parsed String %s, date is %s%n", goodFriday, holiday); 
} catch (DateTimeParseException ex) { 
 System.out.printf("%s is not parsable!%n", goodFriday); 
 ex.printStackTrace(); 
}

Output : 
Successfully parsed String Apr 18 2020, date is 2020-04-18

示例 20 如何在 Java 8 中對日期進行格式化,轉換成字符串

LocalDateTime arrivalDate = LocalDateTime.now(); 
try { 
 DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM dd yyyy hh:mm a"); 
 String landing = arrivalDate.format(format); 
 System.out.printf("Arriving at : %s %n", landing); 
 } catch (DateTimeException ex) { 
 System.out.printf("%s can't be formatted!%n", arrivalDate); 
 ex.printStackTrace(); 
}

Output : Arriving at : Jan 14 2020 04:33 PM

示例 21獲取時間戳秒和毫秒

Instant ins= Instant.now();
System.out.println("10位 秒"+ins.getEpochSecond());
System.out.println("13位 毫秒"+ins.toEpochMilli());

Java 8 中日期與時間 API 的幾個關鍵點

  1. 它提供了 javax.time.ZoneId 用來處理時區(qū)。
  2. 它提供了 LocalDate 與 LocalTime 類
  3. Java 8 中新的時間與日期 API 中的所有類都是不可變且線程安全的,這與之前的 Date 與 Calendar API 中的恰好相反,那里面像 java.util.Date 以及 SimpleDateFormat 這些關鍵的類都不是線程安全的。
  4. 新的時間與日期 API 中很重要的一點是它定義清楚了基本的時間與日期的概念,比方說,瞬時時間,持續(xù)時間,日期,時間,時區(qū)以及時間段。它們都是基于 ISO 日歷體系的。
  5. 每個 Java 開發(fā)人員都應該至少了解這套新的 API 中的這五個類:
    1. Instant 它代表的是時間戳,比如 2020-01-14T02:20:13.592Z,這可以從 java.time.Clock 類中獲取,像這樣: Instant current = Clock.system(ZoneId.of(“Asia/Tokyo”)).instant();
    2. LocalDate 它表示的是不帶時間的日期,比如 2020-01-14。它可以用來存儲生日,周年紀念日,入職日期等。
    3. LocalTime – 它表示的是不帶日期的時間
    4. LocalDateTime – 它包含了時間與日期,不過沒有帶時區(qū)的偏移量
    5. ZonedDateTime – 這是一個帶時區(qū)的完整時間,它根據 UTC / 格林威治時間來進行時區(qū)調整
  6. 這個庫的主包是 java.time,里面包含了代表日期,時間,瞬時以及持續(xù)時間的類。它有兩個子 package,一個是 java.time.foramt,這個是什么用途就很明顯了,還有一個是 java.time.temporal,它能從更低層面對各個字段進行訪問。
  7. 時區(qū)指的是地球上共享同一標準時間的地區(qū)。每個時區(qū)都有一個唯一標識符,同時還有一個地區(qū) / 城市 (Asia/Tokyo) 的格式以及從格林威治時間開始的一個偏移時間。比如說,東京的偏移時間就是 + 09:00。
  8. OffsetDateTime 類實際上包含了 LocalDateTime 與 ZoneOffset。它用來表示一個包含格林威治時間偏移量(+/- 小時:分,比如 + 06:00 或者 -08:00)的完整的日期(年月日)及時間(時分秒,納秒)。
  9. DateTimeFormatter 類用于在 Java 中進行日期的格式化與解析。與 SimpleDateFormat 不同,它是不可變且線程安全的,如果需要的話,可以賦值給一個靜態(tài)變量。DateTimeFormatter 類提供了許多預定義的格式器,你也可以自定義自己想要的格式。當然了,根據約定,它還有一個 parse() 方法是用于將字符串轉換成日期的,如果轉換期間出現任何錯誤,它會拋出 DateTimeParseException 異常。類似的,DateFormatter 類也有一個用于格式化日期的 format() 方法,它出錯的話則會拋出 DateTimeException 異常。
  10. 再說一句,“MMM d yyyy”與 “MMm dd yyyy” 這兩個日期格式也略有不同,前者能識別出”Jan 2 2020″與”Jan 14 2020″這兩個串,而后者如果傳進來的是”Jan 2 2020″則會報錯,因為它期望月份處傳進來的是兩個字符。為了解決這個問題,在天為個位數的情況下,你得在前面補 0,比如”Jan 2 2020″應該改為”Jan 02 2020″。

總結

到此這篇關于Java 8新時間日期庫java.time使用的文章就介紹到這了,更多相關Java 8新時間日期庫java.time內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 深入了解Java中的類加載機制

    深入了解Java中的類加載機制

    通常,在關于Java的類加載部分會遇到以上疑問,本文將對類加載重要部分做詳細介紹,包括重要的基礎概念和應用場景,在編寫過程中也幫助作者重新熟悉并加固了知識點,希望在看完后對大家能有所幫助
    2022-11-11
  • 基于javaweb+jsp的游泳館會員管理系統(tǒng)(附源碼)

    基于javaweb+jsp的游泳館會員管理系統(tǒng)(附源碼)

    這篇文章主要介紹了基于javaweb+jsp的游泳館會員管理系統(tǒng),開發(fā)工具eclipse/idea/myeclipse/sts等均可配置運行,此源代碼社和課程設計,大作業(yè)及畢業(yè)設計項目,需要的朋友可以參考下
    2022-04-04
  • SpringBoot自定義starter方式

    SpringBoot自定義starter方式

    本文介紹了如何創(chuàng)建一個自定義的Spring Boot Starter,以實現日志功能,通過使用SPI機制,可以在不修改啟動類的情況下,實現自動配置和功能導入,同時,還討論了如何在自定義Starter中編寫必要的配置文件和注解,以確保功能的正確實現和配置的智能提示
    2025-02-02
  • java如何從地址串中解析提取省市區(qū)(完美匹配中國所有地址)

    java如何從地址串中解析提取省市區(qū)(完美匹配中國所有地址)

    這篇文章主要給大家介紹了關于java如何從地址串中解析提取省市區(qū)的相關資料,通過這個方法可以完美匹配中國所有地址,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • java 同步、異步、阻塞和非阻塞分析

    java 同步、異步、阻塞和非阻塞分析

    這篇文章主要介紹了java 同步、異步、阻塞和非阻塞分析的相關資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot的監(jiān)控(Actuator)功能用法詳解

    SpringBoot的監(jiān)控(Actuator)功能用法詳解

    這篇文章主要介紹了SpringBoot的監(jiān)控(Actuator)功能用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 分享Java死鎖的4種排查工具

    分享Java死鎖的4種排查工具

    這篇文章主要介紹了分享Java死鎖的4種排查工具,死鎖指的是兩個或兩個以上的運算單元,都在等待對方停止執(zhí)行,以取得系統(tǒng)資源,但是沒有一方提前退出,就稱為死鎖,下文更多相關內容需要的小伙伴可以參考一下
    2022-05-05
  • java 使用JDBC構建簡單的數據訪問層實例詳解

    java 使用JDBC構建簡單的數據訪問層實例詳解

    以下是如何使用JDBC構建一個數據訪問層,包括數據轉換(將從數據庫中查詢的數據封裝到對應的對象中……),數據庫的建立,以及如何連接到數據庫,需要的朋友可以參考下
    2016-11-11
  • springboot使用TaskScheduler實現動態(tài)增刪啟停定時任務方式

    springboot使用TaskScheduler實現動態(tài)增刪啟停定時任務方式

    這篇文章主要介紹了springboot使用TaskScheduler實現動態(tài)增刪啟停定時任務方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 劍指Offer之Java算法習題精講數組與列表的查找及字符串轉換

    劍指Offer之Java算法習題精講數組與列表的查找及字符串轉換

    跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現質的變化
    2022-03-03

最新評論

福建省| 民县| 弥渡县| 桦南县| 罗源县| 崇义县| 社会| 包头市| 武功县| 密山市| 体育| 澄城县| 武威市| 洛南县| 左权县| 虹口区| 延边| 佛山市| 礼泉县| 周至县| 白河县| 民乐县| 安新县| 邵阳县| 昭通市| 深水埗区| 崇明县| 焉耆| 孟连| 丹寨县| 开阳县| 寿宁县| 保亭| 朝阳市| 黔东| 三亚市| 长葛市| 沂南县| 牡丹江市| 沙田区| 丁青县|