django中默认的语言为英文,而时间则为UTC时间。如果需要改为简体中文和中国相对应的时间,需要对根目录下的settings.py进行相应的设置,设置结果如下:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
这里需要特殊强调的是USE_TZ,这里指timezone
具体来讲,Django如果开启了Time Zone功能,则所有的存储和内部处理,甚至包括直接print显示全都是UTC的。只有通过模板进行表单输入/渲染输出的时候,才会执行UTC本地时间的转换。
在官方文档https://docs.djangoproject.com/en/1.11/topics/i18n/timezones/上,官方建议开启USE_TZ=TRUE,主要的理由有:
- 对于需要跨时区的应用,不在内部同一使用UTC会造成很大的麻烦。
- 即使应用只在一个时区下工作,有的国家也有夏令时(Daylight Saving Time (DST))一说,会造成时间上的错误。
所以总的来说,建议开启USE_TZ,不要怕麻烦,毕竟以后是要干大事的人。
另外,django对于timezone的支持用到了pytz库,在django1.11和未来的版本中是被内置在django的安装包中的,但在之前的旧版本是没有的,手动开启方法按下不表。
参考资料:
http://www.itwendao.com/article/detail/281394.html
https://segmentfault.com/q/1010000000405911/a-1020000000405938
版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载请标明http://www.jianshu.com/u/3460d089ffd3
网友评论