在R中格式化日期,小数秒和AM / PM指标

时间:2017-01-27 17:25:08

标签: r

我的data.frame字符串与"7/30/2009 9:18:35.000000 PM"类似。格式有点不寻常,因为它是从数据库转储中提取的。

我正在尝试使用as.POSIXct转换这些字符串。从strptime中的文档中,我相信format = "%m/%d/%Y %H:%M:%OS %p" - %OS可以捕获小数秒,%p来捕获一天中的时间:

as.POSIXct("7/30/2009 9:18:35.000000 PM", format = "%m/%d/%Y %H:%M:%OS %p")
[1] "2009-07-30 09:18:35 EDT"

我希望这会返回"2009-07-30 21:18:35 EDT"。 看起来秒字段中的尾随零或AM / PM指示符都会导致问题。

有什么想法吗?

以下是一些示例数据:

v <- c("7/31/2009 7:35:38.000000 AM", "7/30/2009 9:18:35.000000 PM", 
"7/30/2009 9:18:30.000000 PM", "7/30/2009 9:18:40.000000 PM", 
"7/30/2009 9:18:39.000000 PM", "7/30/2009 9:19:29.000000 PM", 
"7/30/2009 9:18:42.000000 PM", "7/30/2009 9:18:45.000000 PM", 
"7/31/2009 7:35:31.000000 AM", "7/31/2009 7:35:30.000000 AM")

2 个答案:

答案 0 :(得分:2)

strptime(&#34; 7/30/2009 9:18:35.00000 PM&#34;,&#34;%m /%d /%Y%I:%M:%S%p&#34; < / p>

答案 1 :(得分:1)

您可能需要%I

从文件中

  

%I - 十进制小时数(01-12)。

  

%H - 小时为十进制数(00-23)。

as.POSIXct("7/30/2009 9:18:35.000000 PM", format = "%m/%d/%Y %I:%M:%OS %p")
# [1] "2009-07-30 21:18:35 IST"