32

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

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

4

8 に答える 8

13
>>> 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'
>>> 
于 2009-11-05T16:07:59.813 に答える
10

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 オフセットの変更が考慮されます。

于 2013-09-02T09:12:36.050 に答える
9

Python 3.7:

import datetime

datetime.datetime.now().astimezone().tzinfo
于 2020-08-09T07:55:02.153 に答える
5

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

于 2009-11-05T15:15:33.110 に答える
1

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

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

于 2009-11-05T16:00:48.387 に答える
0

多分試してください:

import time

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

于 2013-08-22T16:04:00.863 に答える
-1

私は自分自身に同じことを尋ねていました.[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、参照のみ。

于 2013-12-09T15:16:30.840 に答える