时间周期 java_周期和持续时间 / Period and Duration
# 周期和持續(xù)時(shí)間 / Period and Duration
當(dāng)您編寫代碼來(lái)指定一段時(shí)間時(shí),請(qǐng)使用最符合您需要的類或方法: Duration 類, Period 類或 ChronoUnit.between 方法。
甲持續(xù)時(shí)間測(cè)量使用基于時(shí)間的值(秒,毫微秒)的時(shí)間量。Period 使用基于日期的值(年,月,日)。
注 一天的持續(xù) / Duration 時(shí)間正好是 24 小時(shí)。一天的時(shí)間,當(dāng)添加到 ZonedDateTime 時(shí),
可能會(huì)根據(jù)時(shí)區(qū)而變化。例如,如果它發(fā)生在夏令時(shí)的第一天或最后一天。
# Duration
在測(cè)量機(jī)器時(shí)間的情況下,Duration 最合適,例如使用 Instant 對(duì)象的代碼。Duration 對(duì)象以秒或納秒度量,
不使用基于 Date 的結(jié)構(gòu),如年、月和日,盡管類提供了轉(zhuǎn)換為天數(shù)、小時(shí)和分鐘的方法。一個(gè) Duration 可以有一個(gè)負(fù)值,
如果它是在開(kāi)始點(diǎn)之前發(fā)生的端點(diǎn)創(chuàng)建的。
以下代碼以納秒計(jì)算兩個(gè)瞬間之間的持續(xù)時(shí)間:
比如:將 10 秒變成一個(gè) Duration,再讓 start 加上這個(gè) Duration,也就是加 10 秒;
這種 api 可能會(huì)更靈活,在計(jì)算完兩個(gè)時(shí)間點(diǎn)的持續(xù)時(shí)間后,還可以進(jìn)行計(jì)算
# ChronoUnit
定義了用于測(cè)量時(shí)間的單位。當(dāng)你想要在一個(gè)單位的時(shí)間內(nèi)測(cè)量一段時(shí)間,比如幾天或幾秒時(shí),
ChronoUnit.between 可以做到。between 方法與所有基于時(shí)間的對(duì)象一起工作,但是它只返回單個(gè)單元的數(shù)量。
下面的代碼以毫秒為間隔計(jì)算兩個(gè)時(shí)間戳之間的差距:
而 Duration 類則可以轉(zhuǎn)換為更多的時(shí)間單位;
# Period
要用基于日期的值(年、月、日)來(lái)定義大量的時(shí)間,使用周期類。周期類提供了各種 get 方法,
例如 getMonths, getDays 和 getYears,這樣您就可以從周期中提取出時(shí)間的數(shù)量。
時(shí)間由三個(gè)單位組成:月、日、年。為了顯示在一個(gè)單位時(shí)間內(nèi)測(cè)量的時(shí)間量,比如天數(shù),你可以使用 ChronoUnit.between 的方法。
下面的代碼報(bào)告了你的年齡,假設(shè)你是在 1960 年 1 月 1 日出生的。周期類用于確定數(shù)年、月和日的時(shí)間。
同一時(shí)期,在總天數(shù)中,是通過(guò)使用 ChronoUnit.between 來(lái)確定的。在方法之間,在括號(hào)中顯示:
這些計(jì)算不考慮時(shí)區(qū)差異。舉個(gè)例子,如果你出生在澳大利亞,但現(xiàn)在住在班加羅爾,這就會(huì)略微影響你的確切年齡。
在這種情況下,使用一個(gè)周期與 ZonedDateTime 類一起使用。當(dāng)你向一個(gè) ZonedDateTime 添加一個(gè) Period 時(shí),時(shí)間差異就會(huì)被觀察到。
# 總結(jié) Duration : 可被轉(zhuǎn)換為天,小時(shí),分鐘,秒,毫秒,納秒
Period :可被轉(zhuǎn)換為年,月,天
ChronoUnit:可以測(cè)量任意一個(gè)單位的間隔時(shí)間;也提供了各種單位常量
總結(jié)
以上是生活随笔為你收集整理的时间周期 java_周期和持续时间 / Period and Duration的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java标点符号用什么意思_java怎么
- 下一篇: java不可编辑的文本框_如何使编辑文本