2016-12-26 87 views
0

我想将某些字符值转换为时间格式。 首先我想:无法将''d/m/y h:m''格式转换为CST时间格式

as.POSIXct('1/1/2010 04:00','%m/%d/%Y %H:%m','CST6CDT') 

它返回NA。 然后我尝试:

library(lubridate) 
with_tz(as.POSIXct('1/1/2010 04:00','%m/%d/%Y %H:%m'),'CST6CDT') 

它返回错误值:

"0001-01-19 18:00:00 CST" 

为什么这个happend以及如何得到正确的值:"2010-01-01 04:00:00 CST"

回答

1

使用lubridate,它的工作,如果我们使用dmy_hm方式

library(lubridate) 
dmy_hm('1/1/2010 04:00', tz = 'CST6CDT') 
#[1] "2010-01-01 04:00:00 CST" 

而且,与as.POSIXct,对于分钟格式的错字。它应该是%M

as.POSIXct('1/1/2010 04:00', format = '%m/%d/%Y %H:%M',tz = 'CST6CDT') 
#[1] "2010-01-01 04:00:00 CST" 
+0

几个测试后,我想我的问题来自于忽视“格式=”,我说,然后它的作品。 –

+0

@ YQ.Wang这两个都很重要,例如'format'调用和'%M'分钟,因为如果你看看'as.POSIXct'中的参数,第二个参数是'tz',后面跟'format' ,所以如果不指定它,它可能会认为'tz'是第二个参数并且会产生问题。 – akrun

+1

我明白了。非常感谢您的帮助! –