2016-07-05 45 views
0

我們正在使用一個API,它需要以毫秒爲單位的Epoch時間作爲參數之一。將POSIXct對象以毫秒爲單位轉換爲一個字符串,避免整數溢出?

我原來是用

milli <- paste0(as.integer(posix) * 1000) 

但顯然由於,打破相當快,因爲​​它是隱式轉換爲雙當日期有太多高R的32位整數。然後我試了

milli <- paste0(as.integer(posix), "000") 

但是它的壽命有限。

Another answer建議使用options(scipen = 1000),這可行,但意味着你沒有得到科學印刷。如果這真的是唯一的方法來做到這一點,那麼它會做,但是有沒有辦法從POSIXct以毫秒爲單位的時間作爲一個字符串,而不必先轉換爲數字?

如果需要的話,我很樂意使用任何軟件包。

+0

這可能是可以工作的東西嗎? http://www.inside-r.org/questions/how-convert-posixct-numeric-milliseconds – theArun

+0

什麼是您的(最終)日期範圍?一種選擇可能是首先從源posix中刪除給定的秒數(例如取決於年份),以便將數字結果轉換爲不帶第一個數字的值(字符),然後粘貼這些數字。不簡單,我同意... –

+0

@阿倫也失去了科學印刷。這是我們目前使用的解決方案,但它確實使閱讀大數字變得很痛苦。 – Sean1708

回答

0

轉換像'as.numeric(as.POSIXct(object$datum,tz='UTC')) * 1000’應該給你沒有溢出問題。根據您的喜好更改時區'tz'。

0

到目前爲止,我已經找到了最好的方法是臨時更改打印格式,例如:

old_options <- options(scipen = 1000) 
milli <- paste0(as.numeric(posix) * 1000) 
options(old_options) 

感覺脆,但它適用於現在。

相關問題