python(または)に、コンピューターに現在設定されているタイムゾーンに対応するオブジェクトpytzを返すクロスプラットフォーム関数はありますか?tzinfo
環境変数はクロスプラットフォームではないため、当てにできません
>>> 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'
>>>
tzlocalタイムゾーンを返すモジュールpytzは *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 オフセットの変更が考慮されます。
Python 3.7:
import datetime
datetime.datetime.now().astimezone().tzinfo
time.timezone現在のタイムゾーン オフセットを返します。datetime.tzinfoより複雑な構造が必要な場合は、 もあります。
私自身は使用していませんが、dateutil.tz.tzlocal() でうまくいくはずです。
http://labix.org/python-dateutil#head-50221b5226c3ccb97daa06ea7d9abf0533ec0310
多分試してください:
import time
print time.tzname #またtime.tzname[time.daylight]
私は自分自身に同じことを尋ねていました.[1]で答えを見つけました:
セクション 8.1.7 を見てください: 形式 "%z" (小文字、大文字の Z はタイム ゾーンも返しますが、4 桁の形式ではなく、[3] のようにタイム ゾーンの略語の形式で返します) of strftime は、電子メール ヘッダーの標準である形式「+/- 4DIGIT」を返します (RFC 2822 のセクション 3.3 を参照してください。[2] を参照してください。これは、電子メール ヘッダーのタイムゾーンを指定する他の方法を廃止します)。
したがって、タイムゾーンをこの形式にしたい場合は、次を使用します。
time.strftime("%z")
[1] http://docs.python.org/2/library/datetime.html
[2] https://www.rfc-editor.org/rfc/rfc2822#section-3.3
[3] タイムゾーンの略語: http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations、参照のみ。