将R中的12小时格式转换为24小时格式

将R中的12小时格式转换为24小时格式,r,data.table,lubridate,R,Data.table,Lubridate,当我试图将12小时转换为24小时时,我没有得到正确的转换。我的脚本(下面是示例数据) 库(lubridate) 库(数据表) #读取样本数据 df给你: library(lubridate) df$Date <- mdy_hms(df$Date) 库(lubridate) df$Date给你: library(lubridate) df$Date <- mdy_hms(df$Date) 库(lubridate) df$Date正如@lmo评论的那样,您需要使用%I参数,而不是%H

当我试图将12小时转换为24小时时,我没有得到正确的转换。我的脚本(下面是示例数据)

库(lubridate)
库(数据表)
#读取样本数据
df给你:

library(lubridate)
df$Date <- mdy_hms(df$Date)
库(lubridate)
df$Date给你:

library(lubridate)
df$Date <- mdy_hms(df$Date)
库(lubridate)

df$Date正如@lmo评论的那样,您需要使用
%I
参数,而不是
%H
,从
?strtime

%H
小时数为十进制数(00–23)。作为一个特殊的例外字符串 例如24:00:00被接受为输入,因为ISO 8601允许这些

%我
小时数为十进制数(01–12)


如@lmo所述,您需要使用
%I
参数,而不是
%H
,从
?strtime

%H
小时数为十进制数(00–23)。作为一个特殊的例外字符串 例如24:00:00被接受为输入,因为ISO 8601允许这些

%我
小时数为十进制数(01–12)


你最初的翻译被取消了。改用这个:
dt$TOD2我尝试了你的转换,但一开始它不起作用。然后我意识到在data.table之前调用lubridate是导致问题的原因。当我只使用data.table运行它时,它按预期运行,并给出了正确的答案。谢谢。你最初的翻译被取消了。改用这个:
dt$TOD2我尝试了你的转换,但一开始它不起作用。然后我意识到在data.table之前调用lubridate是导致问题的原因。当我只使用data.table运行它时,它按预期运行,并给出了正确的答案。谢谢。我试过你的转换,但一开始不起作用。然后我意识到在data.table之前调用lubridate是导致问题的原因。当我只使用data.table运行它时,它按预期运行,并给出了正确的答案。谢谢。您好,有没有办法将“00”显示为一个数字“0”?我刚才使用了.numeric(“00”)来获取单个0值,请注意,这已经将类类型从字符更改为数字,这可能会破坏一些条件测试。我尝试了您的转换,但一开始没有工作。然后我意识到在data.table之前调用lubridate是导致问题的原因。当我只使用data.table运行它时,它按预期运行,并给出了正确的答案。谢谢。您好,有没有办法将“00”显示为一个数字“0”?我刚才使用了.numeric(“00”)来获取单个0值,请注意,这已经将类类型从字符更改为数字,这可能会破坏一些条件测试。
df$TOD <- format(strptime(df$Date, "%B %d %Y %H:%M:%S %p"), format="%I:%M:%S") # Using dataframe instead of data.table
library(lubridate)
df$Date <- mdy_hms(df$Date)
strptime("April 21 2016 09:50:49 PM", "%B %d %Y %I:%M:%S %p")
# [1] "2016-04-21 21:50:49 EDT"