2016-08-26 4 views
1

私はPythonでは、datetimeパッケージだけでローカライズされたタイムスタンプを取得する方法は?

from datetime import datetime 
datetime.utcfromtimestamp(unix_timestamp) 

問題がある使用してUTCに変換することができます(例えば1294778181など)秒単位のUNIXタイムスタンプを持って、私は'US/Eastern'の対応時間(任意のDSTを考慮)を取得したいと思い、私は使用できません。 pytzと他のユーティリティ。

datetimeのみご利用いただけます。

これは可能ですか? ありがとう!

+3

を通じてあなたははtimedelta – iScrE4m

+1

加算/減算う独自の関数を書くことができ、あなたは右のオフセット権利を追跡する必要があるので、ええ、私は、それを避けるために希望ですか? –

+1

YAH、私は別の方法を考えることはできません:あなたは常にあなた自身のpytzを書くことができます/:D https://github.com/newvem/pytz/tree/master/pytz – iScrE4m

答えて

1

supersmartソリューションははtimedelta

import datetime 
>>> now = datetime.datetime.utcnow() 

米国/東は5時間UTCの後ろにあるので、リードバックするときように、ちょうどtimedeltaオブジェクトとして5時間thouse作成し、それを否定してみましょうを使用している最も簡単ではなく、私たちのコード我々はオフセットいることがわかりますが-5であり、我々は同じようsmoethingて日時を実行したい、我々はDSTを修正したい場合は、タイムゾーンが

>>> eastern_offset = -(datetime.timedelta(hours=5)) 
>>> eastern = now + eastern_offset 
>>> now 
datetime.datetime(2016, 8, 26, 20, 7, 12, 375841) 
>>> eastern 
datetime.datetime(2016, 8, 26, 15, 7, 12, 375841) 

を相殺追加するととき減算する際の決定に魔法がないことこれは完全に正確ではない、タイムゾーンは私のeではないxpertise(ビットをグーグル、今では毎年変わり、不潔))

if now.month > 2 and now.month < 12: 
    if (now.month == 3 and now.day > 12) or (now.month == 11 and now.day < 5): 
     eastern.offset(datetime.timedelta(hours=5)) 

あなたはそれが毎年どのように変化するかを正確に知る、時間を追加し、さらに詳細に行くことが...私は行くつもりはありませんすべてのこと:)

+0

素晴らしいが、これは、アカウントDSTに時間がかかりますか? –

+1

残念ながら、それはしていません。別の時間を適用する条件は、今年のない日時の日付が2つの別の日付時刻 – iScrE4m

+1

@Noobieの間にある時に、オフセットあれば、それは私がDSTを行う方法の幅広いアイデアを私の答えを編集した、しかし、あなたはそれがしたいならば、それはかなり複雑だことによって固定することができ常に正確です。それが私たちがpytzを持っている理由です – iScrE4m

関連する問題