如何更改我的Django服务器时间
我想把现在的日期保存到数据库里,但我的Django服务器的时间比现在早了13个小时。因为这个原因,当我使用下面的代码时,时间也会发生变化:
datetime.datetime.now()
我正在使用Python 2.7.5和Django 1.5.4。请问我该如何在django
中显示我现在的系统日期呢..?
3 个回答
这里有几个选择:
在 settings.py
文件中:
有用户提到,你实际上可以把 TIME_ZONE = None
设置为无,这样的话系统会默认使用你电脑的时间。不过,这在你想要把项目放到服务器上或者上传到远程机器时会遇到大麻烦。比如说,如果你把项目放在亚马逊的服务器上,而设置了 TIME_ZONE = None
,那么你可能会得到托管服务器的物理机器的系统时间。
所以,你必须选择一个有效的 tz
数据库时间。如果你查看这个页面的 TZ
列:tz数据库时区,你可以使用这些值中的任何一个。
注意:如果你的用户来自不同的时区(比如国家或世界的不同地方),手动设置一个单一的 tz
数据库时区可能会有些限制。
在这种情况下,你可以选择 (1) 让用户在注册时提供他们的时区,并修改你的代码,或者 (2) 导入 django.utils 的时区模块,具体可以参考这个页面:django时区模块文档。还有一个选择是 (3) 构建一个地理定位器,当用户打开你的页面时,它会自动获取他们的经纬度,并根据这些信息生成时区。请注意,一旦你部署了应用程序,为用户调整时区的过程比为本地建筑和测试设置时区要复杂得多。
*//回答已编辑,以反映更全面的答案。
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = False
这个方法对我设置印度时区有效。
如果你的服务器的日期和时间不对,先把这个问题解决了。如果日期和时间是正确的,你可以在你的 settings.py
文件里添加一个时区设置:
USE_TZ = True
TIME_ZONE = 'UTC'
你可以查看 http://en.wikipedia.org/wiki/List_of_tz_database_time_zones,那里有一个有效时区的列表。