Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:activate()未显示效果_Python_Django_Django Timezone - Fatal编程技术网

Python Django:activate()未显示效果

Python Django:activate()未显示效果,python,django,django-timezone,Python,Django,Django Timezone,我在python manager.py shell中有以下行: >>> import pytz >>> from django.utils import timezone >>> zone = "Asia/Kolkata" >>> timezone.activate(pytz.timezone(zone)) >>> timezone.now() datetime.datetime(2014, 12, 17,

我在python manager.py shell中有以下行:

>>> import pytz
>>> from django.utils import timezone
>>> zone = "Asia/Kolkata"
>>> timezone.activate(pytz.timezone(zone))
>>> timezone.now()
datetime.datetime(2014, 12, 17, 1, 52, 0, 411937, tzinfo=<UTC>)
现在,当我尝试将其保存到我的数据库(Mongodb上的Mongodb)时,它会被保存为
UTC
我的数据库中有一个
DateTimeField


虽然当我将其保存为一个简单字符串时,它会被保存在当前时区,即“亚洲/加尔各答”输出为字符串:
2014-12-17 11:01:53.028852+05:30

它实际上成功地将当前时区设置为“亚洲/加尔各答”

您可以通过以下方式进行验证:

...
>>> timezone.get_current_timezone_name()
'Asia/Kolkata'
从:

现在():

返回表示当前时间点的日期时间。确切地 返回的内容取决于使用价值:

  • 如果USE_TZ为False,则这将是一个简单的datetime(即datetime 没有关联的时区),表示当前时间(以秒为单位) 系统的本地时区

  • 如果USE_TZ为真,这将是一个警告 datetime以UTC表示当前时间。请注意,now()将 无论时区值如何,始终返回UTC时间;你 可以使用localtime()转换为当前时区中的时间

因此,如果系统的本地时区为“Asia/Kolkata”,则可以在
settings.py
中将
USE_TZ
设置为
False
,然后
timezone.now()
将返回您想要的结果

或者,您必须使用将时区转换为您的时区(从shell结果继续):

。。。
>>>导入日期时间
>>>utc_date=datetime.datetime.utcnow()
>>>aware_date=时区。使_知晓(utc_date,timezone.utc)
>>>timezone.localtime(感知日期、时区。获取当前时区()
datetime.datetime(2014,12,17,8,0,36,598113,tzinfo=)
最后是
make\u aware()
函数的文档

...
>>> timezone.get_current_timezone_name()
'Asia/Kolkata'
...
>>> import datetime
>>> utc_date = datetime.datetime.utcnow()
>>> aware_date = timezone.make_aware(utc_date, timezone.utc)
>>> timezone.localtime(aware_date, timezone.get_current_timezone())
datetime.datetime(2014, 12, 17, 8, 0, 36, 598113, tzinfo=<DstTzInfo 'Asia/Kolkata' IST+5:30:00 STD>)