5.5 日期和时间
日期和时间是一个很令人头疼的话题。不是所有的年都是365天,不是每天都是24小时,不是每分钟都是60秒29。
R自带的日期/时间方法不太好用,因此我们用一个叫做lubridate
的package.
install.packages("lubridate")
library("lubridate")
5.5.1 ISO标准
日期/时间的ISO标准格式是这样的:
now()
#> [1] "2019-08-05 18:34:46 CST"
最后三个字母是时区。
5.5.2 创建日期/时间
5.5.2.1 现在的日期/时间
today()
#> [1] "2019-08-05"
now()
#> [1] "2019-08-05 18:34:46 CST"
5.5.2.2 通过字符串转换
date()
函数可以把ISO标准格式的日期,从字符串转换成日期的数据类型。
class("2001-02-01")
#> [1] "character"
date("2001-02-01"); class(date("2001-02-01"))
#> [1] "2001-02-01"
#> [1] "Date"
ymd()
, mdy()
, dmy()
这三个函数可以很智能地把各种格式的日期转换成ISO标准的日期。
X <- date("2001-02-01")
A <- ymd(010201)
B <- mdy("February the 1st, 2001")
C <- dmy("01/FEB/01")
# 验证A, B, C全部等于X
sapply(list(A, B, C), identical, X)
#> [1] TRUE TRUE TRUE
如果想加上时间,使用有_h
, _hm
, _hms
后缀的版本的函数:
dmy_h("01-Feb-2001 17")
#> [1] "2001-02-01 17:00:00 UTC"
ymd_hms(010201173245)
#> [1] "2001-02-01 17:32:45 UTC"
5.5.3 计算
5.5.4 在绘图中的应用
闰年为366天;夏令时开始时的那一天只有23小时,结束时为25小时;地球的自转速度在缓慢下降,因此会有“闰秒”。↩