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 在绘图中的应用


  1. 闰年为366天;夏令时开始时的那一天只有23小时,结束时为25小时;地球的自转速度在缓慢下降,因此会有“闰秒”。