2016-12-17 3 views
3

私はESTにあり、date.today()を使用しようとしていますが、翌日に戻っています。ドキュメントには現地時間でなければならないと書かれています。私のローカル(EST)の日付を返す方法を誰かが知っていますか?Python date.today()はローカル日付を返しません

classmethod date.today() Return the current local date. This is equivalent to date.fromtimestamp(time.time()).

https://docs.python.org/2/library/datetime.html#date-objects

UPDATE:明確にするために、それは私が午後10時ESTの周りにしようとしたときを除いて、ほとんどの時間の作品。私はtime.strftime('%X %x %Z')と私のタイムゾーンをチェックし、それはUTCのように見えます。状況を考えれば、今日の日付はどのように取得するのですか? ESTで日付を取得している間、システムをUTCにしたいとします。

+1

は 'datetime'方法が間違った日付/時刻を他与えますか? – elethan

+2

Windowsで正しく動作しますか?タイムゾーンの設定を確認しましたか?タイムゾーン設定を変更した場合は、新しい設定を有効にするためにPythonコマンドラインを再起動する必要があることに注意してください。 – niemmi

+0

これは完全にうまく動作します。私はWindowsとLinuxの両方をチェックインしました。 –

答えて

3

あなたはpytz使用して気にしない場合:

pytz

The standard library has no tzinfo instances, but there exists a third-party library which brings the IANA timezone database (also known as the Olson database) to Python: pytz.

pytz contains up-to-date information and its usage is recommended.

python datetime moduleが明示的にpytzが推奨する

from datetime import datetime, date 
from pytz import timezone 

datetime.now(timezone('US/Eastern')) 

注意(だけでなく、作品例が含まれていますが、 "ほとんどの時間")これを明示的にdateに変換するには:

date.fromtimestamp(datetime.now(timezone('US/Eastern')).timestamp()) 

それとも、< 3.3(datetime.timestampは4年前にリリースされたので、その以前のバージョンがそれを持っていないかもしれません)のpythonを使用している場合:

from datetime import timezone as datetime_timezone 
now = datetime.now(timezone('US/Eastern')) 
ts = (now - datetime(1970, 1, 1, tzinfo=datetime_timezone.utc)).total_seconds() 
date.fromtimestamp(ts) 
+0

これで、 'AttributeError: 'datetime.datetime'オブジェクトに属性 'timestamp'がありません – FullStack

+0

@FullStack [' datetime.timestamp'](https://docs.python.org/3.5/library/datetime .html#datetime.datetime.timestamp)が3.3で導入されました。多分、Pythonを更新する必要があります。 docstringには、更新したくない場合には、それを直接計算する方法の変種も含まれています。 'dt'はあなたのオブジェクトを表していることに注意してください。私は答えを更新します。 – MSeifert

関連する問題