2017-04-24 78 views
0

我希望将3秒添加到特定的时间格式。 原始格式是这样的:使用R添加3秒到特定的格式时间

"2017-04-22T06:19:10.000Z", "2017-04-22T06:19:11.000Z", 
"2017-04-22T06:19:12.000Z", "2017-04-22T06:19:13.000Z", ... . 

这是一个字符向量因此在福斯特一步,我需要将其转换为时间(也许as.POSIXlt),但我损失秒:

> as.POSIXlt("2017-04-22T06:19:10.000Z", tz = "Europe/London") 
[1] "2017-04-22 BST" 

我也尝试下面的命令,但我

> as.Date("2017-04-22T06:19:10.000Z","%Y-%m-%dT%H:%M:%S",tz = "Europe/London") 
[1] NA 

有什么不对?

TNX

+0

使用'strptime尝试()'代替? 'strptime(“2017-04-22T06:19:10.000Z”,“%Y-%m-%dT%H:%M:%S”,tz =“Europe/London”)' –

回答

1

您需要在您的通话as.POSIXlt的格式。如果排除毫秒,as.POSIXlt将忽略它。然后,只需添加+3

没有+3:

as.POSIXlt("2017-04-22T06:19:10.000Z", "%Y-%m-%dT%H:%M:%S",tz = "Europe/London") 
[1] "2017-04-22 06:19:10 BST" 

随着+3

as.POSIXlt("2017-04-22T06:19:10.000Z", "%Y-%m-%dT%H:%M:%S",tz = "Europe/London") +3 
[1] "2017-04-22 06:19:13 BST" 
+0

不需要忽略毫秒。 'options(digits.secs = 3); as.POSixct(“2017-04-22T06:19:10.001Z”,“%Y-%m-%dT%H:%M:%OSZ”,tz =“Europe/London”)+ 3 –

+0

@ db哦,是的。我不清楚。我只是说,如果你忽略它们,你会得到秒数作为最小的时间单位。我强硬的OP只在几秒钟内感兴趣,因为他在他的例子中使用了':%S'。如果他想增加3秒并保持毫秒信息,':%OSZ'就可以工作 –

0

我们可以做到这一点与lubridate

library(lubridate) 
ymd_hms("2017-04-22T06:19:10.000Z", tz = "Europe/London")