←
PDF 279 / 520 Summary
→
English · PDF 279
Original PDF page 279
中文 · 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:日期/时间类之间允许的算术运算组合

练习

    1. 为什么有 months() 却没有 dmonths()?
    1. 向一个刚开始学习 R 的人解释 days(overnight * 1)。它是如何工作的?