Lubridate 或 ANYTIME 将 24 小时制转换为 12 小时制
Lubridate or ANYTIME to convert from 24hr to 12hr time
如标题所示,我正在尝试使用 lubridate 或 ANYTIME(或类似工具)将时间从 24 小时转换为 12 小时。为了让生活更轻松,我不需要转换整个时间。
我的意思是我有一列格式的日期:
2021-02-15 16:30:33
我可以使用 inbound$Hour <- hour(inbound$Timestamp)
从时间戳中获取小时,这很棒.. 除了它仍然是 24 小时制。 (这会为小时数创建一个整数列)
我尝试了几种变异,例如inbound <- inbound %>% mutate(Hour = ifelse(Hour > 12, sum(Hour - 12),Hour)
这在技术上可行..但我得到了一些非常不稳定的值(例如,我在几行中得到了 -294)..
是否有更简单的方法来转换 12 小时制?
根据下面的建议,我尝试使用如下基本格式:
inbound$Time <- format(inbound$Timestamp, "%H:%M:%S")
inbound$Time <- format(inbound$Time, "%I:%M:%S")
在第二种格式上我收到错误
Error in format.default(inbound$Time, "%I:%M:%S") :
invalid 'trim' argument
我确实注意到第一种格式转换为 class CHARACTER 列..不确定这是否会导致第二种格式出现问题..
然后我也试了:
`inbound$time <- format(strptime(inbound$Timestamp, "%H:%M:%S"), "%I:%M %p")`
它运行没有错误..但它创建了一个完整的 NA 列
最终编辑::::::我犯了 mis-reading/applying 解决方案的错误,这导致了错误.. 当使用评论中的 inbound$Time <- format(inbound$Time, "%I:%M:%S")
或 as.numeric(format(inbound$Timestamp, "%I"))
时......两者都有效并解决了我遇到的问题。
要明确...从 2021-02-15 16:30:33 结果你只想要 04:30:33?
无需润滑或任何时候。假设这是一个 Posixct
a <- as.POSIXct("2021-02-15 16:30:33")
a
# [1] "2021-02-15 16:30:33 UTC"
b <- format(a, "%H:%M:%S")
b
#[1] "16:30:33"
c <- format(a, "%I:%M:%S")
c
#[1] "04:30:33"
如标题所示,我正在尝试使用 lubridate 或 ANYTIME(或类似工具)将时间从 24 小时转换为 12 小时。为了让生活更轻松,我不需要转换整个时间。
我的意思是我有一列格式的日期:
2021-02-15 16:30:33
我可以使用 inbound$Hour <- hour(inbound$Timestamp)
从时间戳中获取小时,这很棒.. 除了它仍然是 24 小时制。 (这会为小时数创建一个整数列)
我尝试了几种变异,例如inbound <- inbound %>% mutate(Hour = ifelse(Hour > 12, sum(Hour - 12),Hour)
这在技术上可行..但我得到了一些非常不稳定的值(例如,我在几行中得到了 -294)..
是否有更简单的方法来转换 12 小时制?
根据下面的建议,我尝试使用如下基本格式:
inbound$Time <- format(inbound$Timestamp, "%H:%M:%S")
inbound$Time <- format(inbound$Time, "%I:%M:%S")
在第二种格式上我收到错误
Error in format.default(inbound$Time, "%I:%M:%S") :
invalid 'trim' argument
我确实注意到第一种格式转换为 class CHARACTER 列..不确定这是否会导致第二种格式出现问题..
然后我也试了:
`inbound$time <- format(strptime(inbound$Timestamp, "%H:%M:%S"), "%I:%M %p")`
它运行没有错误..但它创建了一个完整的 NA 列
最终编辑::::::我犯了 mis-reading/applying 解决方案的错误,这导致了错误.. 当使用评论中的 inbound$Time <- format(inbound$Time, "%I:%M:%S")
或 as.numeric(format(inbound$Timestamp, "%I"))
时......两者都有效并解决了我遇到的问题。
要明确...从 2021-02-15 16:30:33 结果你只想要 04:30:33?
无需润滑或任何时候。假设这是一个 Posixct
a <- as.POSIXct("2021-02-15 16:30:33")
a
# [1] "2021-02-15 16:30:33 UTC"
b <- format(a, "%H:%M:%S")
b
#[1] "16:30:33"
c <- format(a, "%I:%M:%S")
c
#[1] "04:30:33"