我有以下日期时间:
t <- "2018-05-01 23:02:50 UTC"
我想将其拆分为时间和日期。
当我申请 date(t) 我得到日期部分。但是当我使用 lubridate 的hms,parse_date_time和其他函数来执行此操作时,"HMS"我会得到NA.
我已经在 SOF 上检查了其他答案,但由于某种原因,它给了我NA。
请教如何提取。
我想了解为什么:
strftime(t, format="%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
会做的工作,但我在我丢失lubridate::hms或parse_date_time?
我的解决方案是安装library(anytime):
date <- anytime::anydate(t)
time <- strftime(t, format="%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
您在lubridate's中缺少的hms()是它期望“时分秒三元组的字符向量”作为参数。没有规定处理也包含日期信息的字符串。因此,Sys.Date()or的输出lubridate::now()不能作为 的输入lubridate::hms()。
如果你想要一个tidyverse解决方案,这里有一个:
library(tidyverse)
library(lubridate)
now()
#> [1] "2018-08-13 16:41:31 BST"
get_time <- function(time = now()) {
time %>%
str_split(" ") %>%
map_chr(2) %>%
hms()
}
get_time()
#> [1] "16H 41M 31S"
get_time("2018-05-01 23:02:50 UTC")
#> [1] "23H 2M 50S"
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.2.0)于 2018 年 8 月 13 日创建。
这就是你要找的吗?现在可以使用 hms::as_hms 更简单地完成。
> library(lubridate)
> library(hms)
> as_hms(ymd_hms("2018-05-01 23:02:50 UTC"))
23:02:50
> t <- "2018-05-01 23:02:50 UTC"
> as_hms(ymd_hms(t))
23:02:50
Run Code Online (Sandbox Code Playgroud)