将12小时制时间转换为24小时制

14

我有一个时间数据集,它是以字符格式表示的。我试图将其从12小时格式转换为24小时格式。我已经进行了一些搜索,但我发现所有的方法都假定这些字符已经是24小时格式的。以下是我正在处理的时间示例。

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
2个回答

27

这应该可以正常工作:

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")

strptime(times, "%I:%M %p")

## [1] "2015-04-23 09:06:00 EDT" "2015-04-23 16:42:00 EDT"
## [3] "2015-04-23 15:05:00 EDT" "2015-04-23 12:00:00 EDT"
## [5] "2015-04-23 03:38:00 EDT"

如果您只需要时间:

format(strptime(times, "%I:%M %p"), format="%H:%M:%S")
## [1] "09:06:00" "16:42:00" "15:05:00" "12:00:00" "03:38:00"

1
太好了,谢谢!我在搜索时确实找到了strptime,但是无法排除日期,因为我已经将其存储在另一个变量中。致敬 - Galilean Moons

4
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
print(as.POSIXct(times, format='%I:%M %p'))

[1] "2015-04-23 09:06:00 CDT" "2015-04-23 16:42:00 CDT" "2015-04-23 15:05:00 CDT" "2015-04-23 12:00:00 CDT"
[5] "2015-04-23 03:38:00 CDT"

@Tyler - 你打字比我快。给话题发起者 - 请注意CDT和EDT是如何根据您的时区自动填充的 - 在转换与一天更改1小时内的时间时,这可能潜在成为一个问题。


1
我承认用了两只手指(这是事实),但是我在我的 .Rprofile 文件中定义了函数来添加注释(以#号)和缩进4个空格,这样可以节省加代码的时间。所以我不是打字比别人快,而是更聪明地作弊了 :-) - Tyler Rinker
你认为CDT / EDT / PDT等工具怎么样? - Alexey Ferapontov
谢谢你提醒时区的问题! - Galilean Moons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接