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

1 创建日期时间

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

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

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

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

1
today()

 

1
now()

 

1.1通过字符串创建

1
ymd("2022-03-09")

 

1
dmy("09-Mar-2022")

 

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

 

1.2 通过各个成分创建

加载tidyverde包出现错误:

 

重新安装rlang包:

 

此时重新加载:

 

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

1
2
3
flights %>%
 
 select(year, month, day, hour, minute)

 

2 获取成分

1
2
3
datetime <- ymd_hms("2022-03-09 20:30:56")
 
year(datetime)  #年份

 

1
month(datetime)  #月份

 

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

 

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

 

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

 

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

1
month(datetime, label = TRUE)

 

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

 

2.1 设置成分

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

 

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

 

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

 

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

 

1
2
3
update() 函数创建一个新日期时间:
 
update(datetime, year = 2023, month = 3, mday = 2, hour = 2)

 

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

1
2
3
ymd("2021-03-01") %>%
 
  update(mday=30)

 

3 时间间隔

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

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

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

3.1 时期

R中,将两个日期相减:

1
2
3
h_age <- today() - ymd(19961010)
 
h_age

 

1
as.duration(h_age)

 

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

1
dseconds(15)

 

1
dminutes(10)

 

1
dhours(c(12, 24))

 

1
ddays(0:5)

 

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

1
2 * dyears(1)

 

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

 

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

1
2
3
tomorrow <- today() + ddays(1)
 
tomorrow

 

1
2
3
last_year <- today() - dyears(1)
 
last_year

 

3.2 阶段

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

1
seconds(15)

 

1
minutes(10)

 

1
hours(c(12, 24))

 

1
days(7)

 

1
months(1:6)

 

1
years(1)

 

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

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

 

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

 

阶段可以和日期相加

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

 

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

 

3.3 区间

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

1
2
3
next_year <- today() + years(1)
 
next_year

 

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

 

posted @   zhang-X  阅读(362)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示