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

java8新特性教程之time包使用總結(jié)

 更新時間:2019年01月30日 11:34:49   作者:Owen  
Java8新增了date和time的util包,下面這篇文章主要給大家介紹了關(guān)于java8新特性教程之time包使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

Java8新特性java.time.*包學習。 自從java發(fā)布模式變更就發(fā)現(xiàn)自己有些跟不上他們的速度,java8還有不少沒有用透而9、10、11相繼出來,長江后浪推前浪一浪勝過一浪。之前date的使用還不敢自信說多透徹,后續(xù)都是淚...(歡迎醬油...)

以jdk1.8.0_111為例

新的設(shè)計思路

  • 引入final定義支持時間點不可變和線程安全,長久來的Date的設(shè)計一直遭人詬病著;
  • 設(shè)計LocalDate、LocalDateTime、LocalTime、instant、Clock、Duration等類,format\zoo\temporal等包規(guī)范時間的定義劃分;
  • 時間統(tǒng)一使用 ISO-8601 日歷系統(tǒng),也就是yyyy-MM-dd'T'HH🇲🇲ss:SSSZZ格式,輸出2012-04-13T10:53:43:119+08:00樣子,要是用過jota-time包估計你什么都懂了;
  • 規(guī)范并提供更加好用的時間操作方法,plus\minus\with\to\get\of\now等方法命名規(guī)則;

jdk1.8包目錄簡介:

  • time:父級基礎(chǔ)包,常用的時間相關(guān)類都在這里,如LocalDate\LocalDateTime\Instant等
  • chrono:日歷系統(tǒng)包,日歷相關(guān)的接口(類似Calendar)也包括提供對其他日歷系統(tǒng)的API
  • format:格式化和解析包,主要類是DateTimeFormatter
  • temporal:擴展功能包,提供細粒度的時間控制field、unit,如weeks、months、month-of-year等
  • zone:時區(qū)包,時區(qū)規(guī)則、本地時區(qū)等

圍繞常用點和大多數(shù)人經(jīng)常用到做些用例

計算、格式化、字符串轉(zhuǎn)換這三快可以說是很基礎(chǔ)的功能,大多數(shù)人主要圍繞這幾塊進行開發(fā)和封裝,基礎(chǔ)掌握后面的高級用法慢慢就可以積累。一般使用都是圍繞time基礎(chǔ)包中LocalDate\LocalDateTime\LocalTime類展開,先介紹一下這幾個類及相關(guān)的類。

LocalDate: 一個ISO-8601日歷系統(tǒng)下的data對象,如2007-12-03 LocalDateTime: 一個ISO-8601日歷系統(tǒng)下的data-time對象,如2007-12-03T10:15:30 LocalTime: 一個ISO-8601日歷系統(tǒng)下的time對象,如10:15:30 Instant: 一個瞬時的時間點值對象,從1970-01-01T00:00:00Z點毫秒計算的 Clock: 基于instant生成的時鐘對象,遵守UTC時區(qū)規(guī)則可以去生成date和time Duration: 一個time范圍值對象,單位也可以是分鐘或小時 Period: 一個date范圍值對象,單位可以是年、月、日,和duration正好是兩個粒度對象 OffsetDateTime: 從UTC/Greenwich格式時間偏移成ISO-8601的date-time對象,如2007-12-03T10:15:30+01:00 OffSetTime: 和OffsetDateTime類似,粒度是到time的UTC時間格式對象,如10:15:30+01:00 ZonedDateTime: 帶時區(qū)的ISO-8601日歷系統(tǒng)的date-time對象,如2007-12-03T10:15:30+01:00 Europe/Paris ZonedOffset: 一個帶時區(qū)的從Greenwich/UTC的偏移量范圍中對象,如+02:00

網(wǎng)上找的新舊類的比較圖挺好的,貼在這里:

時間加減計算

LocalDateTime dateTime = LocalDateTime.now(Clock.system(ZoneId.systemDefault()));
LocalDateTime datetime2 =dateTime.minusDays(2);

printTest(dateTime);
printTest(datetime2);
printTest(datetime2.plusHours(3));
printTest(datetime2.minusWeeks(1));
printTest(datetime2.plus(1,ChronoUnit.MONTHS));

printTest(datetime2.compareTo(dateTime));
printTest(datetime2.withYear(2));
printTest(datetime2.isBefore(dateTime));

Duration duration = Duration.ofDays(5);
printTest(duration);
printTest(duration.plusHours(2).toMinutes());

結(jié)果:

1 : 2019-01-29 11:01:49
2 : 2019-01-27 11:01:49
3 : 2019-01-27 14:01:49
4 : 2019-01-20 11:01:49
5 : 2019-02-27 11:01:49
6 : -2
7 : 0002-01-27 11:01:49
8 : true
9 : PT120H
10 : 7320

時間輸出格式化

LocalDateTime dateTime = LocalDateTime.now(Clock.systemDefaultZone());

printTest(dateTime);
printTest(dateTime.format(DateTimeFormatter.BASIC_ISO_DATE));
printTest(dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
printTest(dateTime.format(DateTimeFormatter.ISO_WEEK_DATE));
printTest(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH🇲🇲ss.SSS")));

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
builder.appendPattern("yyyy-MM-dd");
builder.parseStrict().toFormatter();
printTest(dateTime.format(builder.parseStrict().toFormatter()));

結(jié)果:

1 : 2019-01-29 11:14:07
2 : 20190129
3 : 2019-01-29T11:14:07.232
4 : 2019-W05-2
5 : 2019-01-29 11:14:07.232
6 : 2019-01-29

時間對象和string相互轉(zhuǎn)換

LocalDateTime dateTime = LocalDateTime.now(Clock.system(ZoneId.systemDefault()));
printTest(dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE));
printTest(dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
printTest(dateTime.format(DateTimeFormatter.ISO_LOCAL_TIME));

printTest(dateTime.format(DateTimeFormatter.BASIC_ISO_DATE));
printTest(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH🇲🇲ss")));
printTest(dateTime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)));
printTest(dateTime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)));
printTest(dateTime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.valueOf("MEDIUM"))));

printTest(LocalDateTime.parse("2019-12-03T10:15:30").toString());
printTest(LocalDate.parse("2019-12-03",DateTimeFormatter.ISO_LOCAL_DATE));
printTest(LocalTime.parse("10:15:30",DateTimeFormatter.ISO_LOCAL_TIME));

結(jié)果:

1 : 2019-01-29
2 : 2019-01-29T10:35:38.508
3 : 10:35:38.508
4 : 20190129
5 : 2019-01-29 10:35:38
6 : 19-1-29 上午10:35
7 : 2019-1-29 10:35:38
8 : 2019-1-29 10:35:38
9 : 2019-12-03T10:15:30
10 : 2019-12-03
11 : 10:15:30

新API和就Date轉(zhuǎn)換策略

LocalDateTime localDateTime = LocalDateTime.now();
localDateTime.minusHours(2);
printTest(localDateTime);
Date localDateTime2 = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
printTest(localDateTime2.toString());

LocalDate localDate = LocalDate.now();
printTest(localDate);
Date localDate2 = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
printTest(localDate2);

Date date = new Date();
printTest(date);
LocalDateTime date2 = LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault());
printTest(date2);

LocalTime localTime = LocalDateTime.ofInstant(new Date().toInstant(),ZoneId.systemDefault()).toLocalTime();
printTest(localTime);

結(jié)果:

1 : 2019-01-29 13:06:58
2 : Tue Jan 29 13:06:58 CST 2019
3 : 2019-01-29
4 : Tue Jan 29 00:00:00 CST 2019
5 : Tue Jan 29 13:06:58 CST 2019
6 : 2019-01-29 13:06:58
7 : 13:06:58.343

想學好一件東西,強烈建議你買本書看看

不要聽信那些“網(wǎng)上找找文檔看看就能掌握”的鬼話,過來人都明白知識體系的分量有多重要。自己找的資料是非常零碎的,同時需要你很強大的知識構(gòu)建能力去把這些都串起來。很不幸,這樣的能力絕大多數(shù)人都不具備。

每一本技術(shù)書的完成都不是一朝一夕隨隨便便就寫出來的,作者用心良苦的在思考如何幫助你去理解。寫書和技術(shù)能力有時不一定成正比,但邏輯思維能力應該不弱。反正寫技術(shù)書的人在我心里都是神一般的存在,雖然垃圾書比較多但不影響我對他們的仰慕。

推薦

常用java處理時間包:joda-time

java8-api文檔:jdk8-doc

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java?設(shè)計模式中的策略模式詳情

    Java?設(shè)計模式中的策略模式詳情

    這篇文章主要介紹了Java?設(shè)計模式中的策略模式詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • JPA默認值設(shè)置沒有效果的解決

    JPA默認值設(shè)置沒有效果的解決

    這篇文章主要介紹了JPA默認值設(shè)置沒有效果的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 異常排查記錄amqp協(xié)議鏈接陷阱

    異常排查記錄amqp協(xié)議鏈接陷阱

    這篇文章主要介紹了一次關(guān)于amqp協(xié)議鏈接陷阱-An?unexpected?connection?driver?error?occured的異常排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Android 判斷真機和模擬器的方法

    Android 判斷真機和模擬器的方法

    這篇文章主要介紹了 Android 判斷真機和模擬器的方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringCloud+Tornado基于jwt實現(xiàn)請求安全校驗功能

    SpringCloud+Tornado基于jwt實現(xiàn)請求安全校驗功能

    這篇文章主要介紹了SpringCloud+Tornado基于jwt實現(xiàn)請求安全校驗,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • java使用minio上傳下載文件完整版教程

    java使用minio上傳下載文件完整版教程

    本示例教程介紹了如何使用SpringBoot框架結(jié)合MinIO服務實現(xiàn)文件的上傳和下載功能,并將文件信息存儲在數(shù)據(jù)庫的file表中,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 在Java中輕松使用工廠設(shè)計模式介紹

    在Java中輕松使用工廠設(shè)計模式介紹

    這篇文章主要介紹了在Java中輕松使用工廠設(shè)計模式介紹,工廠設(shè)計模式或工廠方法設(shè)計模式是一種廣泛使用且易于理解的設(shè)計模式,文章通過圍繞主題展開詳細的內(nèi)容介紹,感興趣的朋友可以參考一下
    2022-09-09
  • java高并發(fā)的線程中斷的幾種方式詳解

    java高并發(fā)的線程中斷的幾種方式詳解

    這篇文章主要介紹了Java線程中斷機制幾種方法及示例,向大家分享了這幾種方法的介紹幾代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2021-10-10
  • Java文件(io)編程_文件字節(jié)流的使用方法

    Java文件(io)編程_文件字節(jié)流的使用方法

    下面小編就為大家?guī)硪黄狫ava文件(io)編程_文件字節(jié)流的使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • springboot項目如何設(shè)置session的過期時間

    springboot項目如何設(shè)置session的過期時間

    這篇文章主要介紹了springboot項目如何設(shè)置session的過期時間,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

万盛区| 肥东县| 富宁县| 菏泽市| 潢川县| 苏尼特右旗| 德庆县| 彭阳县| 崇仁县| 伊吾县| 盘山县| 滁州市| 改则县| 彰化市| 宁河县| 明星| 永新县| 大英县| 横峰县| 五河县| 阿拉善右旗| 浠水县| 连江县| 昌图县| 紫云| 轮台县| 潮安县| 南皮县| 富顺县| 隆尧县| 老河口市| 墨脱县| 张家口市| 阳江市| 托克托县| 秦安县| 毕节市| 邮箱| 宁陕县| 蒙阴县| 鄂伦春自治旗|