簡體   English   中英

Joda-Time:Period,Interval和Duration之間有什么區別?

[英]Joda-Time: what's the difference between Period, Interval and Duration?

Joda-Time 2中,三種時間跨度有什么區別:

  • 間隔
  • 持續時間

    1. 為什么我們需要三節課?

    2. 哪一個表現更好?

    3. 為什么分割 Period或Duration或Interval實例未實現? 例如p = p.divideBy(2);

需要3個類,因為它們代表不同的概念,因此需要選擇適當的工作而不是相對性能。 來自我用斜體添加的評論的文檔


在約達時間的時間間隔表示時間從一毫秒時刻到另一時刻的間隔。 兩個時刻都是日期時間連續體中的完全指定的時刻,並帶有時區。 具體時間定義為例如,這可能是昨天20:00:00GMT和今天早上09:00:00GTT之間的間隔。

在約達-的持續時間表示以毫秒計的時間的持續時間。 持續時間通常從間隔獲得。 即我們可以從間隔的末尾開始減去以得出持續時間

在約達-時間表示在一段時間中的字段來定義,例如,3年5月2天及7小時。 這與持續時間的不同之處在於它以毫秒為單位是不精確的。 通過指定相對於的時刻(包括時間順序和時區),只能將句點解析為精確的毫秒數。 例如,考慮1年的時間,如果我們將其添加到1月1日,我們將始終在1月1日到達,但持續時間將取決於干預年是否是閏年。 同樣地,如果我們將1個月添加到1個月的第1個月,那么我們將在下個月的第1個月到達,但持續時間(以毫秒為單位)將根據所討論的月份而變化


問題3,是不是真的需要來划分時間的具體方法,因為我們總是可以從持續時間獲得的毫秒數為long (使用getMillis()把它和建造一個新的持續時間(使用new Duration(long duration) )。

根據上述時期的定義,划分一個時期並不具有真正的意義。 比如半個月呢? (其長度取決於哪個月)。

要添加到mikej的答案

Joda-Time 持續時間是“物理”時間間隔; 例如:

12000 milliseconds < - 這是一個持續時間

Joda-Time 間隔實際上是一對瞬間 (開始即時 - 結束瞬間)。 瞬間又是一個“物理”概念,即時間軸上的一個點。 例如(只是一種可能的表示法):

(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC) < - 這是一個間隔

然后, 間隔可以轉換為持續時間 ,但不能反轉。

考慮這兩個區間:

I1=(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)

I2=(2010/3/3 21:00:00.000 UTC ; 2010/3/3 22:00:00.000 UTC)

作為區間, I1I2是不同的,因為終點是不同的; 但如果我將它們轉換為持續時間,我會得到同樣的東西: 3600000 milliseconds

(數學類比:區間[10,12][95,97]是不同的區間 ,但它們具有相同的長度“區間長度”映射到持續時間 )。

最后,一段時間是“民用時間”的流逝,表示為數月,日,小時等。它本身不代表“物理”間隔,因此不能直接轉換為持續時間 (月份有不同的長度......)。

這回答了問題3:你只能將物理時間(持續時間)除以2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM