Django的时区问题】的更多相关文章

在编码中牵扯到时间问题的时候,总是容易被时区问题搞混,一直以来,都是反复试验应付过去,今天终于搞清楚了个中缘由,一个心结也得以化解. Python 的时区问题 datetime.today() / datetime.now() 这两个函数获得的是当前的系统时间,但得到的datetime对象中的tzinfo是空的,即使系统中设置了时区. datetime.utcnow() 这个函数获得当前的utc时间,应该是根据当前系统时间和时区来计算的. 例如系统时间为14:00,时区为 Asia/Shangh…
1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行在Windows环境,所以即使settings.py中的TIME_ZONE使用默认时区,Django也会根据本机的时区使用当前时区时间.然而程序放到linux运行程序时,Django的时区会使用settings.py中的TIME_ZONE设置的时区,所以这时就出现了问题.再有当我用脚本在linux上…
在Django项目中,最好全部日期值都做成配时区信息的,但是由于遗留项目或者跨语言项目,其他语言的开发人员觉得时区信息处理太麻烦.如何在一个项目中同时适配带时区和不带时区的两种字段. 1.输出:不带时区信息的时间值,可以用datetime的strfttime做个格式化.带时区的时间值输出用django的date过滤器输出,不带时区的可以用notzdate过滤器输出. 2.输入:主要是过滤条件这一步,输入的带时区字段对带时区字段做对比过滤就不用说了,正常的django就这样,不正常的是不带时区的d…
在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即America/Chicago,此时的TIME_ZONE不管有没有设置都不起作用. 如果USE_TZ 设置为False,而TIME_ZONE设置为None,则Django还是会使用默认的America/Chicago时间.若TIME_ZONE设置为其它时区的话,则还要分情况,如果是Windows系统…
在django1.4以后,存在两个概念 naive time 与 active time. 简单点讲,naive time就是不带时区的时间,Active time就是带时区的时间. 举例来说,使用datetime.datetime.utcnow().datetime.datetime.now()输出的类似2015-05-11 09:10:33.080451就是不带时区的时间(naive time), 而使用django.util.timezone.now()输出的类似2015-05-11 09…
在django1.4以后,存在两个概念 naive time 与 active time. 简单点讲,naive time就是不带时区的时间,Active time就是带时区的时间. 举例来说,使用datetime.datetime.utcnow().datetime.datetime.now()输出的类似2015-05-11 09:10:33.080451就是不带时区的时间(naive time), 而使用django.util.timezone.now()输出的类似2015-05-11 09…
首先要明确的是,当在Django项目的setting.py文件中设置了USE_TZ=True时,我们给定的时间存储到数据库的时候都会变成UTC时间(使用auto_now_add和auto_now为True的情况会直接使用时间戳转换成UTC时间保存到数据库,而手动添加的datetime.datetime类型的时间会根据setting.py文件中设置的TIME_ZONE字段表示的时区转换成对应的UTC时区时间,然后保存到数据库中),此时这个时间也是一个aware时间,当我们使用时间作为查询条件进行数…
通过django中的models更新数据库的DateTimeField字段,发现有错误,于是更改了: TIME_ZONE = 'Asia/Shanghai' 结果,还是不正确,于是把: USE_TZ = False 终于OK了.…
在settings.py中修改如下配置: TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False 这样在models中: create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) 就可以直接存储上海时区的时间.…
django的目录下,django/conf/locale,这个目录下,看有什么语言包, zh_Hans代表中文简体,zh_Hant代表中文繁体,设置即可. TIME_ZONE设置为:Asia/Shanghai.…