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

蟒蛇 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 回答
4

以下代码片段返回不同时区的时间,而与服务器上配置的时区无关。

# 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))
于 2015-05-18T16:14:35.953 回答
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]) 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 回答