需要3个类,因为它们代表不同的概念,所以这是为工作选择合适的类而不是相对性能的问题。从文档中,我用斜体字添加了注释:
Joda-Time 中的间隔表示从一毫秒的瞬间到另一个瞬间的时间间隔。这两个即时都是日期时间连续体中完全指定的即时,并配有时区。定义了特定的时间,例如,这可能是昨天的20:00:00GMT和今天早上09:00:00GMT之间的间隔。
以 Joda-Time 为单位的持续时间表示以毫秒为单位的持续时间。持续时间通常从间隔获得。也就是说,我们可以从区间的末尾减去起点,得出持续时间
Joda-Time 中的时间段表示根据字段定义的时间段,例如,3 年 5 个月 2 天和 7 小时。这与持续时间的不同之处在于,它在毫秒数方面是不精确的。一个时间段只能通过指定它相对于的即时(包括时间顺序和时区)来解析为确切的毫秒数。例如,考虑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)
作为间隔,并且是不同的,因为端点是不同的;但是如果我将它们转换为持续时间,我得到同样的东西:.I1
I2
3600000 milliseconds
(数学类比:间隔和间隔是不同的,但它们具有相同的长度:“间隔长度”映射到持续时间)。[10,12]
[95,97]
最后,句点是“民事时间”的流逝,表示为月,天,小时等。它本身并不代表“物理”间隔,因此它不能直接转换为持续时间(月份具有可变长度...)。
这回答了问题3:在物理时间(持续时间)上,您只能除以二。
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-