You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:将含A/P的四位数字时间字符串转为24小时制时间

解决R语言中12小时制字符串转24小时制时间的问题

刚好我之前处理过类似的时间格式转换需求,给你两种靠谱的实现方案,都能精准得到你想要的结果:

方法一:使用Base R原生函数

不需要额外安装包,用R自带的字符串处理和时间解析函数就能搞定,步骤很清晰:

  1. 先把输入字符串末尾的A/P替换成标准的AM/PM(因为R的时间解析函数默认识别完整的AM/PM标识)
  2. 用strptime()把字符串解析成时间对象
  3. 再用strftime()把时间对象格式化为24小时制带冒号的字符串

完整代码如下:

# 输入数据
time <- c("1110A", "1120P", "0420P", "0245P")

# 替换A/P为AM/PM
time_ampm <- gsub("A$", "AM", gsub("P$", "PM", time))

# 解析为时间对象
time_obj <- strptime(time_ampm, format = "%I%M%p")

# 格式化为24小时制时间字符串
Answer <- strftime(time_obj, format = "%H:%M")

# 查看结果
Answer
# 输出:[1] "11:10" "23:20" "16:20" "14:45"

方法二:使用lubridate包(更简洁)

如果你平时常用lubridate处理时间数据,这个方法会更简洁:

先确保安装了lubridate包,然后用parse_date_time()快速解析,再格式化输出:

# 安装并加载lubridate(首次使用需要安装)
# install.packages("lubridate")
library(lubridate)

# 输入数据
time <- c("1110A", "1120P", "0420P", "0245P")

# 替换A/P为AM/PM并解析时间
time_obj <- parse_date_time(gsub("([AP])$", "\\1M", time), orders = "%I%M%p")

# 格式化为目标格式
Answer <- format(time_obj, "%H:%M")

# 查看结果
Answer
# 输出:[1] "11:10" "23:20" "16:20" "14:45"

关键格式说明

  • %I:12小时制的小时数(01-12)
  • %M:分钟数(00-59)
  • %p:AM/PM标识
  • %H:24小时制的小时数(00-23)

两种方法都能完美实现你的需求,选你习惯的方式就行~

内容的提问来源于stack exchange,提问作者Tracy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:43:09