在 R Lubridate 中解析我的日期时间时出现问题

Bil*_*y C 2 r lubridate

我试图通过它不断向我显示“所有格式无法解析。未找到格式”来解析我的日期时间。

这些是我一直在尝试解析的时间和代码。

datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021", "9:42 am Sept 18, 2021")

datetime_parse <- parse_date_time(
  datetime_clean, "%I:%M %p %m/%d/%Y" 
)
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以使用as.POSIXct来自base R. 月份采用格式%b,但有一个额外的字母长,即%b- 表示缩写的月份名称,它是前三个字母而不是四个字母)。一种选择是用 , 删除第四个字母sub,然后%b使用%m

datetime_clean <- sub("([A-Za-z]{3})[a-z]", "\\1", datetime_clean)
as.POSIXct(datetime_clean, format = "%I:%M %p  %b %d, %Y")
Run Code Online (Sandbox Code Playgroud)

-输出

[1] "2021-09-18 16:10:00 EDT" "2021-09-18 12:06:00 EDT" "2021-09-18 09:42:00 EDT"
Run Code Online (Sandbox Code Playgroud)

或者与lubridate

lubridate::parse_date_time(datetime_clean, '%I:%M %p %b %d, %Y')
Run Code Online (Sandbox Code Playgroud)

-输出

[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
Run Code Online (Sandbox Code Playgroud)

这也可以自动解析parsedate::parse_date(来自未经修改的原始对象sub

parsedate::parse_date(datetime_clean)
[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
Run Code Online (Sandbox Code Playgroud)

数据

datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021" ,"9:42 am Sept 18, 2021")
Run Code Online (Sandbox Code Playgroud)