English · PDF 279
如果您想要更精确的测量,就必须使用时间区间(interval)。时间区间是一个带有起点的时长;这使它变得精确,因此您可以准确确定它的长度:
next_year <- today() + years(1) (today() %--% next_year) / ddays(1) #> [1] 365
要计算一个时间区间内包含多少个时期,您需要使用整数除法:
(today() %--% next_year) %/% days(1) #> [1] 365
如何在时长(duration)、时期(period)和时间区间(interval)之间进行选择?一如既往,请选择能解决问题的最简单的数据结构。如果您只关心物理时间,请使用时长;如果您需要添加人类时间,请使用时期;如果您需要计算一段时间跨度以人类单位表示有多长,请使用时间区间。
图 13-1 总结了不同数据类型之间允许进行的算术运算。
| 日期 | 日期时间 | 时长 | 时期 | 时间区间 | 数值 | |||
|---|---|---|---|---|---|---|---|---|
| 日期 | - | - + | - + | - + | ||||
| 日期时间 | - | - + | - + | - + | ||||
| 时长 | - | + | - + | - + | / | - + | ||
| 周期 | - | + | - + | - + | - + | |||
| 间隔 | / | / | ||||||
| 数量 | - | + | - + | - + | x | - + | x |
图 13-1:日期/时间类之间允许的算术运算组合