在Django项目中,最好全部日期值都做成配时区信息的,但是由于遗留项目或者跨语言项目,其他语言的开发人员觉得时区信息处理太麻烦。如何在一个项目中同时适配带时区和不带时区的两种字段。
1、输出:不带时区信息的时间值,可以用datetime的strfttime做个格式化。带时区的时间值输出用django的date过滤器输出,不带时区的可以用notzdate过滤器输出。
2、输入:主要是过滤条件这一步,输入的带时区字段对带时区字段做对比过滤就不用说了,正常的django就这样,不正常的是不带时区的datetime数值对不带时区的字段作对比,由于项目一般配置是使用时区的,所以导致即便输入是不带时区数值,也会当做时区0的输入,导致输入的数值会少8个小时,所以这个数值在对数据库字段作对比时,需要自己加上8个小时。