2015-09-30 53 views
1

我查詢數據的基礎上,並取回日期在EST時間轉換爲GMT時間而不改變日期

d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST")) 
d 

這裏矢量

d 
[1] "2015-06-19 00:38:08 EST" "2015-06-19 00:38:33 EST" 

載體,但我想的時區是在GMT時間。

我怎樣才能得到結果,看起來像

d 
[1] "2015-06-19 00:38:08 GMT" "2015-06-19 00:38:33 GMT" 
+0

你有沒有試過? – Heroka

+1

'as.POSIXlt(d,tz =「GMT」)''給出''2015-06-19 00:38:08 GMT「' –

+0

當我運行它時它改變了時間 – user3022875

回答

1

首先,我們需要讓美國紐約時間時間(這EST」也是模棱兩可,由於在澳大利亞以及在東部時區的存在,以明確的方式,更好的是EST5EDT或「美國/紐約」)如果您運行在不同的時區,使用你沒有得到,同時代碼:

> d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST")) 
> d 
[1] "2015-06-19 00:38:08 PDT" "2015-06-19 00:38:33 PDT" 

的字符時間時區部分的時候基本上忽略用as.POSIXct代替。使用:

> d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST"), tz="America/New_York", usetz=TRUE) 
> d 
[1] "2015-06-19 00:38:08 EDT" "2015-06-19 00:38:33 EDT" 

請注意,顯示夏令時的正確顯示。然後你可以使用format.POSIXt在GMT/UCT/UTC時區的「同時」輸出:

> format(d, tz="GMT") 
[1] "2015-06-19 04:38:08" "2015-06-19 04:38:33" 

我希望這是一個如何strptime處理日期時間輸入一個公平的總結:

日期時間隱式地輸入到由區域設置設置的當前時區中,任何尾隨的tz指示符都會被忽略而不發出任何警告,並將其作爲UCT存儲,其偏移由語言環境與UCT的差異決定。時區格式化% - 'specials'僅用於strftimeformat.POSIXt的輸出。

2

喜歡這個?我不完全確定你想要完成什麼。你的問題的標題要求「改變時間不改變日期」,但你的例子只改變時區。這會在您的示例中產生結果。

d <- as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST")) 
d 
# [1] "2015-06-19 00:38:08 EDT" "2015-06-19 00:38:33 EDT" 
as.POSIXct(as.character(d),tz="GMT") 
# [1] "2015-06-19 00:38:08 GMT" "2015-06-19 00:38:33 GMT" 
+0

在閱讀這個問題會導致一個「不同的時間」,儘管我承認這個短語含糊不清。 –

+0

@BondedDust我同意。但是,如果將OP的輸入(問題的第一行)與期望的輸出(最後一行)進行比較,則所有改變的都是tz。是的,絕對是不同的時代。 – jlhoward

+1

我認爲我們基本同意。這很可能是你想要的答案。對於實時運行的國際銀行系統,我認爲重要的是要明白,使用R的日期時間系統很容易獲得誤導性的結果。日期 - 時間對象的設計在引擎蓋下使用了UCT,但數據輸入可能非常混亂。 –

相關問題