←
PDF 277 / 520 one\pm #> [1] "2016-03-12 13:00:00 EST" one\pm + days(1) #> [1] "2016-03-13 13:00:00 EDT"
→
English · PDF 277
Original PDF page 277
中文 · PDF 277

one_pm #> [1] "2016-03-12 13:00:00 EST" one_pm + days(1) #> [1] "2016-03-13 13:00:00 EDT"

与时间长度(duration)类似,时期(period)也可以通过许多友好的构造函数来创建:

seconds(15) #> [1] "15S" minutes(10) #> [1] "10M 0S" hours(c(12, 24)) #> [1] "12H 0M 0S" "24H 0M 0S" days(7) #> [1] "7d 0H 0M 0S" months(1:6) #> [1] "1m 0d 0H 0M 0S" "2m 0d 0H 0M 0S" "3m 0d 0H 0M 0S" #> [4] "4m 0d 0H 0M 0S" "5m 0d 0H 0M 0S" "6m 0d 0H 0M 0S" weeks(3) #> [1] "21d 0H 0M 0S" years(1) #> [1] "1y 0m 0d 0H 0M 0S"

你可以对时期进行加法和乘法运算:

10 * (months(6) + days(1)) #> [1] "60m 10d 0H 0M 0S" days(50) + hours(25) + minutes(2) #> [1] "50d 25H 2M 0S"

当然,也可以将它们加到日期上。与时间长度相比,时期更可能得到你所期望的结果:

# 闰年 ymd("2016-01-01") + dyears(1) #> [1] "2016-12-31" ymd("2016-01-01") + years(1) #> [1] "2017-01-01" # 夏令时 one_pm + ddays(1) #> [1] "2016-03-13 14:00:00 EDT" one_pm + days(1) #> [1] "2016-03-13 13:00:00 EDT"

下面我们使用时期来修正航班日期中的一个奇怪现象。有些飞机似乎在从纽约出发之前就已经到达了目的地:

flights_dt %>% filter(arr_time < dep_time)