为什么Django中unittest内的时区与时区不同?

时间:2015-11-17 07:55:31

标签: django django-settings django-unittest django-timezone

我正在使用TestCase.client来测试我的观点。当我从测试用例致电timezone.now()时,我会看到2015-11-17 07:48:26.826661 + 00:00 ,但是当我致电

   start = timezone.make_aware(datetime.strptime(
        date_text + ' ' + time,
        '%y/%m/%d %H:%M'
    ))

查看我得到2015-11-17 07:36:00 + 02:00

如何让他们使用相同的时区?

我正在使用./manage.py test --settings=www.tests_settingswww/tests_settings.py包含以下内容:

from .settings import *

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
    }
}

USE_TZ = True
TIME_ZONE = 'Europe/Kiev'


>>> django.__version__
'1.8.4'
>>> pytz.__version__
'2015.7'
>>> sys.version
'3.4.3 (default, Mar 26 2015, 22:03:40) \n[GCC 4.9.2]'

1 个答案:

答案 0 :(得分:0)

哦,我明白了。 make_aware以默认时区返回时间,now - 以UTC格式返回。要获得当地时间,我需要timezone.localtime(timezone.now())

但文档建议处理时间和时区,如文本和编码 - 以UTC(unicode)存储所有内容,并仅在接收或提供给用户时进行转换。