2014-02-06 65 views
0

我有以下日期,我想轉換爲POSIX時間。我跟着this answer,但如果我將日期轉換回來,則輸入和輸出日期之間有區別。如何將字符日期轉換爲POSIX時間而不損失精度

char_date <- "2012-04-27T20:48:14" 
unix_date <- as.integer(as.POSIXct(char_date, origin="1970-01-01")) 
unix_date 
# [1] 1335448800 

將其翻譯爲2012年4月26日星期四14:00:00。

我在搞什麼?

+0

什麼時區是你? – James

+0

澳大利亞悉尼。但時間戳是在中歐拍攝的 – CptNemo

回答

2

無需sub,你應該總是定義時區:

x <- as.POSIXct("2012-04-27T20:48:14", format="%Y-%m-%dT%H:%M:%S", tz="CET") 
#[1] "2012-04-27 20:48:14 CEST" 
as.numeric(x) 
#[1] 1335552494 
0

我認爲這裏有兩個問題:T字符正在影響字符解析器,因此它會加入時間部分,我假設您的時區爲UTC + 10,這就是爲什麼您的翻譯是在前一天的下午2點。

(as.POSIXct(char_date, origin="1970-01-01")) 
[1] "2012-04-27 BST" 

(as.POSIXct(sub("T"," ",char_date), origin="1970-01-01")) 
[1] "2012-04-27 20:48:14 BST" 
+0

我應該說明拍攝時間戳還是我的時間? '(as.POSIXct(sub(「T」,「」,char_date),origin =「1970-01-01」,tz =「CET」))'? – CptNemo

+0

@CptNemo取決於你的想法,但如果你不提供,它會假設你的機器的本地時區,所以你需要保持一致。 – James

相關問題