lubridate包日期时间处理(日期、时间、日期时间、设置和获取时间、时期、阶段、区间)

1 创建日期时间

日期:在 tibble 中显示为 <date>

时间:一天中的某个时刻,在 tibble 中显示为 <time>

日期时间:可以唯一标识某个时刻(通常精确到秒)的日期加时间,在 tibble 中显示为<dttm>

想得到当前日期或当前日期时间,你可以使用 today() now() 函数:

today()

 

now()

 

1.1通过字符串创建

ymd("2022-03-09")

 

dmy("09-Mar-2022")

 

mdy_hm("03/09/2022 20:18")

 

1.2 通过各个成分创建

加载tidyverde包出现错误:

 

重新安装rlang包:

 

此时重新加载:

 

筛选分布在表中的日期时间:

flights %>%

 select(year, month, day, hour, minute)

 

2 获取成分

datetime <- ymd_hms("2022-03-09 20:30:56")

year(datetime)  #年份

 

month(datetime)  #月份

 

mday(datetime)  #一个月中的第几天

 

yday(datetime)  #一年中的第几天

 

wday(datetime)  #一周中的第几天

 

month() wday() 函数,你可以设置 label = TRUE 来返回月份名称和星期数的缩写,还可以设置 abbr = FALSE 来返回全名:

month(datetime, label = TRUE)

 

wday(datetime, label = TRUE, abbr = FALSE)

 

2.1 设置成分

(datetime <- ymd_hms("2022-03-09 20:39:56"))

 

year(datetime) <- 2023  #修改年份

datetime

 

month(datetime) <- 01  #修改月份

datetime

 

hour(datetime) <- hour(datetime) + 2  #修改小时

datetime

 

update() 函数创建一个新日期时间:

update(datetime, year = 2023, month = 3, mday = 2, hour = 2)

 

如果设置的值过大,那么可以自动向后滚动:

ymd("2021-03-01") %>%

  update(mday=30)

 

3 时间间隔

时期:以秒为单位表示一段精确的时间。

阶段:表示由人工定义的一段时间,如几周或几个月。

区间:表示从起点到终点的一段时间。

3.1 时期

R中,将两个日期相减:

h_age <- today() - ymd(19961010)

h_age

 

as.duration(h_age)

 

可以使用很多方便的构造函数来创建时期:

dseconds(15)

 

dminutes(10)

 

dhours(c(12, 24))

 

ddays(0:5)

 

可以对时期进行加法和乘法操作:

2 * dyears(1)

 

dyears(1) + dweeks(12) + dhours(15)

 

时期可以和日期型数据相加或相减:

tomorrow <- today() + ddays(1)

tomorrow

 

last_year <- today() - dyears(1)

last_year

 

3.2 阶段

阶段也是一种时间间隔,但它不以秒为单位;相反,它使用人工时间,比如日和月。

seconds(15)

 

minutes(10)

 

hours(c(12, 24))

 

days(7)

 

months(1:6)

 

years(1)

 

可以对阶段进行加法和乘法操作:

10 * (months(6) + days(1))

 

days(50) + hours(25) + minutes(2)

 

阶段可以和日期相加

ymd("2020-02-02") + dyears(1)

 

ymd("2022-02-02") + years(1)

 

3.3 区间

区间是带有起点的时期,这使得其非常精确,你可以确切地知道它的长度:

next_year <- today() + years(1)

next_year

 

(today() %--% next_year) / ddays(1)

 

posted @ 2022-03-09 21:14  zhang-X  阅读(405)  评论(0)    收藏  举报