为什么 Django 中单元测试中的时区与视图中的时区不同?

Why timezone inside unittest in Django is different from timezone in view?

我正在使用 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_settings 并且 www/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]'

哦,我明白了。 make_aware returns time in default time zone, and now - 在 UTC 中。要获取本地当前时间,我需要执行 timezone.localtime(timezone.now()).

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