2012-12-11 10 views
5

例えば:あなたが見ることができるように変換のdatetimeオブジェクトは、そのタイムゾーンで秒エポック

>>> print dt
2012-12-04 19:00:00-05:00

、私はエポックに、このDateTimeオブジェクトに変換することができますどのようにこのdatetimeオブジェクト を持っています秒GMT -5。

どうすればよいですか?

+4

タイムゾーンによってエポック秒が存在しません。定義上、これらはUTCであり、世界中で同じです。各タイムゾーンは現地時間でオンザフライで変換します。 –

+0

@jimmcnamaraそれが鍵です。非常に助かりました。 –

答えて

6

日時は素朴な日時ではなく、タイムゾーンが分かっています(印刷状態は-5です)。だからあなたはちょうどあなたがDTオブジェクトはナイーブdatetimeオブジェクトだった場合見つけながら、あなたが夏時間に準拠するタイムゾーンで作業する必要があると思い

>>> import time, pytz 
>>> utc = pytz.timezone('UTC') 
>>> utc_dt = utc.normalize(dt.astimezone(utc)) 
>>> time.mktime(utc_dt.timetuple()) 
1355270789.0 # This is just to show the format it outputs 

をエポックためにそれを変換する前に、UTCとして設定する必要がありますGMT 0の間の正確な時間です。たとえば、冬のルーマニアでは、+2、夏期に+3です。あなた-5例えば

、新ニューヨークは行います:

>>> import time,pytz 
>>> timezone = pytz.timezone('America/New_York') 
>>> local_dt = timezone.localize(dt) 

は今、あなたは非ナイーブ日時を持っていると私は最初に説明したようにあなたはエポックタイムを得ることができます。 お楽しみください

+1

おそらく "-05:00"は、指定された日付とタイムゾーンの適切なオフセットをコーディングしていると思われます。 –

+0

ありがとう、私はプリントで-5を見逃しました。私は、非日常的な日時から変換する方法を説明するために答えを適応させました。 – mihaicc

+0

このソリューションは私のためにうまくいった。 http://stackoverflow.com/a/11111177/969984 –

関連する問題