2014-11-21 129 views
4

我有一些问题,解析一个字符串datetime。解析字符串日期时间有问题

这是我在做什么

strftime("28/10/2014 09:05:55 p.m.", format='%d/%m/%Y %I:%M:%S %p') 
##[1] "20/10/28 12:00:00 " 

正如你可以看到,三点不良的事情发生在这里:

  1. ,返回的日期是不正确!
  2. 的时间总是被设置为12:00:00
  3. 返回的值是一个字符串,而不是日期时间(这是相当无关......我后来转换为datetime)所以

,具体问题是:如何正确解析这个字符串datetime?

回答

6

(1)尝试strptime而不是strftime;我不确定strftime做什么,但可能不是你的想法。

(2)我不认为“下午”完全可以工作;您可能需要一些审慎的gsub("p.m.","PM",...)使用。

strptime("28/10/2014 09:05:55 PM", format='%d/%m/%Y %I:%M:%S %p') 
## [1] "2014-10-28 21:05:55 EDT" 
strptime("28/10/2014 09:05:55 p.m.", format='%d/%m/%Y %I:%M:%S %p') 
## NA 
+0

优秀!!!我只是删除了点,它的作品就像一个魅力!'strptime(gsub('\\。','','28/10/2014 09:05:55 PM“),format ='%d /%m /%Y%I:%M:%S%p')'非常感谢! – Barranka 2014-11-21 01:01:33

3

我想你需要先(改变p.m.年代到PM的,以及使用strptime这是适当的输入处理:

> strptime(sub("p\\.m\\.", "PM", "28/10/2014 09:05:55 p.m."), format='%d/%m/%Y %I:%M:%S %p') 
[1] "2014-10-28 21:05:55 PDT" 

当然,你也可能需要转换a.m.的为AM也是如此。

+0

事实证明,情况是无关紧要的,它只是在'am'去除点的物质和'pm'(现在我感觉有点哑失踪,详细说明) – Barranka 2014-11-21 01:07:03

+0

然后'GSUB(“\\”。 ,“”,...)'我尝试了几个在格式规范中放置点并放弃的实例。 – 2014-11-21 01:15:14