【问题标题】:How to convert a 12 hour time stamp (NOT a datetime, time only) to 24 hour time?如何将 12 小时时间戳(不是日期时间,仅时间)转换为 24 小时时间?
【发布时间】:2023-03-30 04:43:01
【问题描述】:

我有一个 character 列,其中包含 12 小时格式的时间,例如:下午 2:59:00、上午 4:35:00、下午 6:00:00 等。

如何使用 lubridate(或其他一些功能)将这些时间转换为 24 小时制?我尝试使用 HMS 功能,但它只是剥离了 AM/PM,而没有实际将时间转换为 24 小时制......

编辑:我尝试了这篇文章的答案:Convert 12 hour character time to 24 hour

这是我的代码:lab_data[,LAB_TM_test:=format(strptime(LAB_TM, "%I:%M %p"), format="%H:%M:%S")]

但这会导致我的专栏变成全部 NA 并给我这个警告:

“警告信息: 在 strptime(LAB_TM, "%I:%M %p") : 检测到 strptime() 用法并用 as.POSIXct() 包装。这是为了尽量减少分配 POSIXlt 列的机会,这些列使用 40+ 字节来存储一个日期(而 POSIXct 使用 8 个字节)。使用 as.POSIXct() (它将根据需要在内部调用 strptime() )以避免出现此警告。"

EDIT2:这是我的列的样子,它是一个字符列:

c("2:59:00 PM", "4:35:00 AM", "6:00:00 PM", "6:00:00 PM", "6:00:00 PM", “6:00:00 PM”、“6:00:00 PM”、“6:00:00 PM”、“5:35:00 AM”)

【问题讨论】:

  • 这能回答你的问题吗? Convert 12 hour character time to 24 hour
  • 嗨,我之前试过这个,但它不起作用,它导致我的专栏中的所有 NA。这是我尝试过的: lab_data[,LAB_TM_test:=format(strptime(LAB_TM, "%I:%M %p"), format="%H:%M:%S")] 但这只会导致 NAs
  • 你能提供一些示例数据吗?
  • 确定我已经编辑了我的帖子
  • 尝试使用dput(lab_data[1:9, LAB_TM])代替图片,我们无法复制。

标签: r date datetime time lubridate


【解决方案1】:

试试

lab_data[,LAB_TM_test:=as.POSIXct(LAB_TM, format='%I:%M:%S %p')]

【讨论】:

  • 感谢您的成功!
【解决方案2】:

这是一个base R解决方案,使用strptime转换为24小时格式,strftime只打印时间。

df$LAB_TM_new <- strftime(strptime(df$LAB_TM, format="%I:%M:%S %p"), format="%H:%M:%S")

df
      LAB_TM LAB_TM_new
1 2:59:00 PM   14:59:00
2 4:35:00 AM   04:35:00
3 6:00:00 PM   18:00:00
4 6:00:00 PM   18:00:00
5 6:00:00 PM   18:00:00
6 6:00:00 PM   18:00:00
7 6:00:00 PM   18:00:00
8 6:00:00 PM   18:00:00
9 5:35:00 AM   05:35:00

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 2012-04-09
    • 1970-01-01
    • 2012-12-01
    • 2013-10-14
    • 2016-03-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多