R 将HH:MM:SS AM/PM字符串转换为时间

R 将HH:MM:SS AM/PM字符串转换为时间,r,time,R,Time,我需要以字符格式解析时间,如“1:36:22 PM” 我尝试了as.POSIXct和strtime的各种排列,但就是没能做到。例如,这未能说明PM的重要性: t <- "1:36:22 PM" as.POSIXct(t, format = "%H:%M:%S") # [1] "2016-09-08 01:36:22 BST" 奇怪的是,出于我无法理解的原因,从输入中删除秒数可能有效: t您是否尝试过使用lubridate软件包?

我需要以字符格式解析时间,如“1:36:22 PM”

我尝试了
as.POSIXct
strtime
的各种排列,但就是没能做到。例如,这未能说明PM的重要性:

t <- "1:36:22 PM"
as.POSIXct(t, format = "%H:%M:%S")
# [1] "2016-09-08 01:36:22 BST"
奇怪的是,出于我无法理解的原因,从输入中删除秒数可能有效:


t您是否尝试过使用lubridate软件包?它可以使用“解析日期时间”功能中的%p指示器处理AM/PM

library(lubridate)
t <- "1:36:22 PM"
parse_date_time(t, '%I:%M:%S %p')
[1] "2016-09-08 13:36:22 UTC"
库(lubridate)

t使用转换规范
%I
%p
。请参见
?strtime
中的详细信息部分:

%I
小时为十进制数(01-12)。>

%p
区域设置中的AM/PM指示器。与
%I
一起使用,与
%H
一起使用


format(strtime(t,“%I:%M:%S%p”),“%H:%M:%S”)
hms::as.hms(lubridate::parse_date_time(“1:30:00 PM”,“IMS p”)
这些缩写是基本R的一部分。请参阅
strtime
的文档以查看所有可用的日期时间缩写。在
parse_date_time
中,您不需要
%
符号。使用
lubridate
中的命令
ymd_hms
,只要输入合理的日期时间值,您甚至不需要指定格式。它会自动从上午/下午转换到24小时。这个答案出现在低质量审查队列中,可能是因为您没有提供任何代码解释。如果这个代码回答了这个问题,考虑添加一些解释你答案中的代码的文本。这样,你就更有可能获得更多的选票——并帮助提问者学习新的东西。。。。此外,您的答案中似乎有
%l
(小写l)而不是
%I
(大写I)
t <- "1:30:00 PM"
strptime(t, "%I:%M %p")
# [1] NA
 
t <- "1:30 PM"
strptime(t, "%I:%M %p")
# [1] "2016-09-08 13:30:00 BST"
t <- "1:30:00 PM"
SOME COMMAND HERE HERE
# [1] "13:30:00"
library(lubridate)
t <- "1:36:22 PM"
parse_date_time(t, '%I:%M:%S %p')
[1] "2016-09-08 13:36:22 UTC"
strptime(t, "%I:%M:%S %p")