首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间:周期、间隔和持续时间有什么区别?

时间:周期、间隔和持续时间有什么区别?
EN

Stack Overflow用户
提问于 2010-04-16 14:16:42
回答 2查看 71.3K关注 0票数 200

尤达-时间 2中,三种时间跨度之间的区别是什么:

  • 句号
  • 间隔
  • 持续时间
代码语言:javascript
复制
1. Why do we need three classes?
2. Which one performs better? 
3. Why is _dividing_ a Period or Duration or Interval instance not implemented? E.g. `p = p.divideBy(2);`

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-16 14:25:45

需要3个类,因为它们代表不同的概念,所以这是为工作选择合适的类,而不是相对性能的问题。在文档中添加了我用斜体表示的评论

interval 以Joda-Time表示从一毫秒到另一毫秒的时间间隔。这两个瞬间都是日期时间连续体中的完全指定的时间点,都是带有时区的。定义了特定的时间,例如,这可能是昨天格林尼治时间20:00到今天上午9:00之间的间隔。

以Joda为单位的工期表示以毫秒为单位的持续时间。持续时间通常是从间隔中获得的。也就是说,我们可以从间隔的末尾减去开始,得到一个持续时间。

Joda时间中的周期表示以字段定义的一段时间,例如3年、5个月、2天和7小时。这与持续时间不同,因为它以毫秒为单位不精确。一个时间段只能通过指定相对于它的瞬间(包括时间序列和时区)来解析为毫秒的确切数目。以1年为例,如果我们把这个加到1月1日,我们总是会在下一个1月1日到达,但持续时间将取决于间隔年是否是闰年。同样,如果我们将一个月的一个月加到一个月的第一天,那么我们就会在下一个月的第一天到达,但是持续时间(以毫秒为单位)将根据有关月份的不同而变化。

对于问题3,实际上并不需要使用特定的方法来划分持续时间,因为我们总是可以以long的形式从持续时间中获得毫秒数(使用getMillis()),并划分它并构造一个新的持续时间(使用new Duration(long duration))。

基于以上时期的定义,划分一个时期实际上没有真正的意义。半个月是什么?(其长度将取决于哪个月)。

票数 257
EN

Stack Overflow用户

发布于 2010-04-16 15:18:21

添加到米基的回答

A 尤达-时间 是“物理”时间间隔;例如:

12000 milliseconds <--这是一个持续时间

Joda时间间隔( Joda-Time interval )实际上是一对实例(启动即时结束瞬间)。即时也是一个“物理”概念,是时间线中的一个点。例(只是一个可能的符号):

(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:你只能除以两个物理时间(一个持续时间)。

票数 93
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2653567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档