为什么 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) 格式存储所有内容,并且仅在接收或提供给用户时才进行转换。
我正在使用 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) 格式存储所有内容,并且仅在接收或提供给用户时才进行转换。