2017-04-24 74 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")