【Django】python时区 | postgresql时间时区问题

一些比较好的阅读资料:
一篇文章解决django中时区问题

概念

  • naive time:不带时区的时间,如2015-05-11 09:10:33.080451,使用datetime.datetime.utcnow()datetime.datetime.now()等输出的
  • active time:带时区的时间,如2015-05-11 09:05:19.936835+00:00,django.util.timezone.now()等输出的
  • UTC时间:第一,表示的是格林尼治平均时,即零区时间。而北京时间表示的是东八区时间,即UTC+8。第二,当我们说获取的是UTC时间,其实就是在说是active time带时区的时间

django时间的时区问题
django 下 PostgreSQL 时区问题整理,主要从源码角度

python:

Django数据库时间存储使用DateTimeField,从数据库取出这个字段,类型是datetime.datetime。下文称这个datetime.datetimemy_time

from pytz import timezone

my_time.tzinfo	#显示时区
my_time.astimezone(timezone("Asia/Shanghai"))	#修改时区
my_time.strftime("%Y-%m-%d %H:%M:%S %z")	#根据想要的格式显示日期时间

问题

1、postgresql存储的是UTC时间(如18:00+08),Django用serializer取出来默认是零区时间(如10:00)

看了一下我的settings.py中,USE_TZ = True,TIME_ZONE = ‘UTC’,猜测大概以为我这边时区就是UTC零区时间,所以用10:00了。后来把TIME_ZONE = ‘Asia/Shanghai’,输出时间就是18:00+08这样了。但是有个问题,如果对方是在其他时区,是否这个设置也会把他们当作上海时区进行输出?
https://blog.csdn.net/wy00703/article/details/45071277这个链接应该能解决我的部分问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值