成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

八年了,這幾個時間API你用過嗎?

開發 前端
時間是一條向前不斷延伸的時間線。我們定義過期時間的時候肯定是一個瞬時時間點,而Instant正好可以用來表示時間線上的一個時間戳,常用來記錄事件時間戳。

相信Java 8中的LocalDate和LocalDateTime大家都非常熟悉了,這些時間API用起來非常語義化,并且能夠保證線程的安全性。今天介紹另外幾個可能你不常用的時間API以及它們的使用場景,或許能夠幫助你更好地進行開發。

Instant

最近我使用java.time.Instant比較多,因為計算JWT的過期時間和發行時間都用的是它。有人會問為什么不使用LocalDateTime呢?其實我也比較納悶。經過一番查詢才明白了為什么要使用Instant。

時間是一條向前不斷延伸的時間線。我們定義過期時間的時候肯定是一個瞬時時間點,而Instant正好可以用來表示時間線上的一個時間戳,常用來記錄事件時間戳。

時間戳示意圖

Instant的范圍需要存儲一個超過long類型極限的數字,因此它被設計為兩個部分:

  • seconds 從計算機元年(1970-01-01T00:00:00Z)開始的秒數,可能是負數哦。
  • nanos 納秒數,用來修正時間以保證準確性,始終是正數,而且小于999,999,999。

常用API的使用

如果你使用Instant.now()獲取當前時間戳,采用的是UTC時間,并非北京時間。所以需要加上時區:

 issuedAt = Clock.system(ZoneId.of("Asia/Shanghai")).instant();

TemporalAccessor的實現類,比如常用的LocalDate、LocalDateTime都可以轉換為Instant,例如:

Instant current = Instant.from(LocalDateTime.now());

Instant instant = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8));

如果在計算機元年以前,需要用負值表示:

stant instantBefore1970 = Instant.ofEpochSecond(-13434234, 343434);

還有其它一些API就不一一介紹了,請務必記住,它通常用來記錄事件發生的瞬時時刻。

Duration

這是一個持續時間,通常表示持續了多少時間。它記錄了一個時間量,可以來自一個開始時間和結束時間,也可以來自一些時間計量單位。它同樣用秒數和納秒來存儲時間量,秒數同樣可以是負數,納秒只能是正數。

Java 8 Duration

常用API的使用

比如你花了3天時間寫了個需求:

Duration days = Duration.ofDays(3);

再精確點,從2022年4月2日到2022年4月5日,共3天:

  Duration duration = Duration.between(LocalDateTime.of(2022, 4, 2,0,0),
LocalDateTime.of(2022, 4, 5,0,0));

注意這里只能使用能夠表示到秒的Temporal實現,比如LocalDate只能表示到天,是不行的。

剩下的持續了多少年、多少月、多少分鐘、多少小時、多少秒就不一一演示了。

格式化

格式基于 ISO-8601 持續時間格式PnDTnHnMn.nS ,其中天數被認為是 24 小時。字符串以可選符號開頭,由 ASCII 負號或正號表示。如果為負,則整個周期都被否定。接下來是大寫或小寫的 ASCII 字母“P”。然后有四個部分,每個部分由一個數字和一個后綴組成。這些部分具有“D”、“H”、“M”和“S”的 ASCII 后綴,表示天、小時、分鐘和秒,接受大寫或小寫。后綴必須按順序出現。ASCII 字母“T”必須出現在小時、分鐘或秒部分的第一次出現(如果有)之前。必須存在四個部分中的至少一個,如果存在“T”,則必須在“T”之后至少有一個部分。每個部分的數字部分必須由一個或多個 ASCII 數字組成。該數字可以以 ASCII 負號或正號為前綴。天數、小時數和分鐘數必須解析為long 。秒數必須解析為帶有可選分數的long整數。小數點可以是點或逗號。小數部分可能有 0 到 9 個數字。

實力:

格式

含義

??PT20.345S??

20.345秒

??PT15M??

15分鐘

??PT10H??

10小時

??P2D??

2天

??P2DT3H4M??

2天3小時4分鐘

??P-6H3M??

減6小時加3分鐘,等于減5小時57分鐘

??-P6H3M??

否定全部,減6小時3分鐘

??-P-6H+3M??

加6小時減3分鐘,等于持續5小時57分鐘

Period

說到這里就不得不說一下Period,感覺它和Duration非常類似,只不過它建立在年月日上,以年、月和日為單位對時間量或時間量進行建模。非常容易理解這里就不細說了,記住它最多精確到天就夠了,它同樣是用來記錄持續時間的,只不過粒度粗了一些。

常用API

持續了2年:

 Period years = Period.ofYears(2);
// 其它時間單位就不演示了。

這里可以使用周進行初始化:

Period weeks = Period.ofWeeks(3);

新冠從2019年12月持續到2022年4月

Period covid19Period = Period.between(LocalDate.of(2019,12,1),
LocalDate.of(2022,4,7));

格式化

基于 ISO-8601 句點格式PnYnMnD和PnW 。字符串以可選符號開頭,由 ASCII 負號或正號表示。如果為負,則整個周期都被否定。接下來是大寫或小寫的 ASCII 字母“P”。然后有四個部分,每個部分由一個數字和一個后綴組成。必須存在四個部分中的至少一個。這些部分具有“Y”、“M”、“W”和“D”的 ASCII 后綴,表示年、月、周和日,接受大寫或小寫。后綴必須按順序出現。每個部分的數字部分必須由 ASCII 數字組成。該數字可以以 ASCII 負號或正號為前綴。該數字必須解析為int 。前導加號/減號和其他單位的負值不是 ISO-8601 標準的一部分。此外,ISO-8601 不允許在PnYnMnD和PnW格式之間混合。任何基于周的輸入乘以 7 并視為天數。

示例:

格式

含義

??P2Y??

兩年

??P3M??

仨月

??P4W??

四周

??P5D??

五天

??P1Y2M3D??

一年倆月零3天

??P1Y2M3W4D??

一年倆月三周零四天,??Period.of(1, 2, 25)??,??3x7+4=25??

??P-1Y2M??

??Period.of(-1, 2, 0)??

??-P1Y2M??

??Period.of(-1, -2, 0)??

這個感覺用來做日歷計算比較合適一些。

責任編輯:武曉燕 來源: 碼農小胖哥
相關推薦

2009-01-18 11:45:57

2021-06-11 13:59:22

CSS原子類

2021-09-30 16:22:34

程序員工具編程

2014-10-30 09:50:05

HTML5

2025-04-23 08:20:00

Linux性能監測命令

2023-03-26 20:23:10

Java開源工具

2024-04-19 09:02:32

前端調試技巧

2022-05-16 08:09:45

前端API

2020-11-19 15:21:21

密碼網絡攻擊網絡安全

2017-09-23 15:17:21

散熱筆記本電腦藍屏

2024-09-11 16:34:38

語法糖Java語言

2018-01-05 11:55:23

數據庫PostgreSQL

2019-03-27 09:40:49

程序員技能開發者

2015-08-31 10:32:28

Windows開始菜單

2018-09-11 17:40:23

容器數據云計算

2021-12-16 13:04:41

消息隊列緩存

2023-11-30 08:19:52

偽類CSS

2016-02-02 17:10:46

戴爾Equal Logic

2019-08-27 15:12:12

Linux操作系統Windows

2020-07-01 07:52:07

Java并發容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费区一区二区三区 | 欧美一级二级三级视频 | 成人免费大片黄在线播放 | 狠狠干美女| 国产免费高清 | 狠狠操狠狠干 | 日韩欧美一区二区在线播放 | 日韩欧美精品 | 日韩h | 久久成人一区 | 国产精品视频网址 | 精品免费国产一区二区三区 | 亚洲一区二区三区在线视频 | 久久久国产精品 | 古装人性做爰av网站 | 亚洲一区二区电影网 | 成人二区 | 欧美日韩国产一区二区 | 涩涩导航 | 亚洲一区二区三区视频 | 亚洲综合中文字幕在线观看 | 成人精品鲁一区一区二区 | 激情婷婷 | 一级黄色片免费在线观看 | 成人片网址 | 国产aaaaav久久久一区二区 | 亚洲精品免费视频 | 国产精品久久久久免费 | 精品久久99 | sese视频在线观看 | 日韩中文字幕一区 | 在线欧美一区 | 日韩精品 | 日韩毛片视频 | 欧美一级黄视频 | 免费黄网站在线观看 | 热99精品视频 | 亚洲精品视频在线 | av男人天堂影院 | 黄色国产大片 | 成人福利在线 |