2013-07-08 51 views
1

我從文本文件中讀取時間戳。這些時間戳用UTC-4表示。我需要將它們轉換爲US/Eastern。如何將UTC-4轉換爲Python中的US/Eastern?

import datetime 
datetime_utc4 = datetime.datetime.strptime("12/31/2012 16:15", "%m/%d/%Y %H:%M") 

如何將其轉換爲US/Eastern?一線答案是最好的。

注:我原來的問題指出來EST EDT。但它並沒有改變問題的本質,即如何從一個時區走向另一個時區。根據一些閱讀(接下來的評論),我認爲Python(特別是pytz)並不把EST和EDT視爲獨立的時區,而是將其視爲美國/東方的兩種風格。但這是一個實現細節。通常將EST和EDT稱爲兩個不同的時區,見例如。 here

+0

[tzinfo](http://docs.python.org/2/library/datetime.html#tzinfo-objects)類用於此,據我所知。 –

+1

那是什麼EST? http://en.wikipedia.org/wiki/Egypt_Standard_Time? http://en.wikipedia.org/wiki/Eastern_Time_Zone?或http://en.wikipedia.org/wiki/AEST? –

+2

您的時間戳是*冬季*,所以這不能從標準轉化爲夏令時.. –

回答

4

根據您的更新和評論,我現在明白了,你有固定爲UTC-4數據,並要糾正這一點,以便它是有效的在美國東部時間,包括EST/EDT在適當情況下。這裏是你如何做到這一點pytz

from datetime import datetime 
import pytz 

dt = datetime.strptime("12/31/2012 16:15", "%m/%d/%Y %H:%M") \ 
      .replace(tzinfo = pytz.FixedOffset(-240)) \ 
      .astimezone(pytz.timezone('America/New_York')) 

請注意,我使用America/New_York時區編號。這是標識符的最正確形式。你可以使用US/Eastern,它可以正常工作,但要注意這是一個別名,它只是爲了向後兼容。

+0

你對我的輸入文本文件的起源有不正確的假設。其一:與主機操作系統禁用夏令時無關。二:沒有必要質疑誰製作文件的人 - 在該文件的時間戳是不正確的(如一些奇怪彭博的Excel API,並登錄到遠程位置的PC的人的相互作用的結果)。我可以看到,截至3/8/13的時間戳以+1小時爲單位,並且在3/8/13之後它們是正確的。無需返回給製作該文件的任何人。它可以修復。 – user443854

+0

我意識到要糾正我的文件,我需要從EDT(aka UTC-4)轉換爲US/Eastern。我更新了我的問題。 – user443854

+0

Ahhhh ..現在我們正在某個地方。它有助於知道您正在嘗試修復無效數據。所以你有靜態的UTC-4數據,並且你想要確保本來應該是EDT的時間被轉移到了它,而其他的被留下。是? –