在本例中,USE_TZ为True,时区设置为UTC:>>> from django.utils import timezone as djtz
>>> i = djtz.now()
>>> type(i)
>>> i.tzinfo
就dateutil而言,它将正确解析字符串:>>> from dateutil.parser import parse
>>> s = '2014-07-14 08:51:49.123342+00:00'
>>> parse(s).tzinfo
tzutc()
>>> z = parse(s)
>>> z
datetime.datetime(2014, 7, 14, 8, 51, 49, 123342, tzinfo=tzutc())
您可以看到它选择了正确的时区(在本例中是UTC)。
default format specifiers只接受+0000作为带%z的偏移格式,或带%Z的三个字母的时区名称;但不能使用它来解析,而只能使用格式:>>> datetime.datetime.strptime('2014-07-14 08:51:49.123342+0000', '%Y-%m-%d %H:%M:%S.%f%z')
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S.%f%z'
>>> datetime.datetime.strftime(z, '%Z')
'UTC'
>>> datetime.datetime.strftime(z, '%z')
'+0000'