web-dev-qa-db-ja.com

現在のタイムゾーンに対応するtz_infoオブジェクトを取得する方法は?

python(またはpytz)に、現在コンピューターに設定されているタイムゾーンに対応するtzinfoオブジェクトを返すクロスプラットフォーム関数はありますか?

環境変数はクロスプラットフォームではないため、信頼できません

25
random guy
>>> import datetime
>>> today = datetime.datetime.now()
>>> insummer = datetime.datetime(2009,8,15,10,0,0)
>>> from pytz import reference
>>> localtime = reference.LocalTimezone()
>>> localtime.tzname(today)
'PST'
>>> localtime.tzname(insummer)
'PDT'
>>> 
12
Alex Martelli

tzlocal modulepytzタイムゾーンを返す* nixおよびwin32で機能します。

from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal

# get local timezone    
local_tz = get_localzone() 


print local_tz.localize(datetime(2012, 1, 15))
# -> 2012-01-15 00:00:00+04:00 # current utc offset
print local_tz.localize(datetime(2000, 1, 15))
# -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04)
print local_tz.localize(datetime(2000, 6, 15))
# -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST

注:DSTと非DSTの両方のUTCオフセットの変更が考慮されます。

8
jfs

次のコードスニペットは、サーバーで構成されているタイムゾーンに関係なく、異なるタイムゾーンの時間を返します。

# pip install pytz tzlocal

from tzlocal import get_localzone
from datetime import datetime
from pytz import timezone

local_tz = get_localzone()
local_datetime = datetime.now(local_tz)

zurich_tz = timezone('Europe/Zurich')
zurich_datetime = zurich_tz.normalize(local_datetime.astimezone(zurich_tz))
4
Sandeep

time.timezone 現在のタイムゾーンオフセットを返します。 datetime.tzinfo 、より複雑な構造が必要な場合。

2
SilentGhost

私自身は使用していませんが、dateutil.tz.tzlocal()でうまくいくはずです。

http://labix.org/python-dateutil#head-50221b5226c3ccb97daa06ea7d9abf0533ec031

1
Jesper Saron

多分試してみてください:

import time

print time.tzname#またはtime.tzname[time.daylight]

1
Rain Lee