python的utc8小时时间问题

数据库里的时间字段:

created_date = models.DateTimeField(blank=True, null=True, )

发现后台怎么修改都无法存当地时间,存的都是utc时间,也就是所谓的少8小时

在前台取时间进行显示时,可以通过timezone.localtime将utc时间转换成当地时间

from django.utils import timezone

createddate = timezone.localtime(created_date).strftime("%Y-%m-%d %H:%M:%S")

created_date 为: 


关于utc时间介绍:

世界的每个地区都有自己的本地时间
整个地球分为二十四时区,每个时区都有自己的本地时间。
为统一而普遍使用一个标准时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。UTC与GMT含义完全相同。


北京时区是东八区,领先UTC 8个小时,在电子邮件信头的Date域记为+0800。
如果在电子邮件的信头中有这么一行:
       Date: Sun, 13 June 2010 09:45:28 +0800
说明信件发送地时间是2010年6月13号,星期日,上午9点45分28秒,该地区本地时领先UTC差 8个小时(+0800,就是东八区时间)。

电子邮件信头的Date域使用24小时的时钟,而不使用AM和PM来标记上下午。


以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用以下公式: 
                        UTC + 时区差=本地时间
时区差东为正,西为负。为此,把东八区时区差记为 +0800,
      UTC + (+0800) = 本地(北京)时间    (1)
那么,UTC = 本地时间(北京时间))- 0800    (2) 
0945 - 0800 = 0145
即UTC是当天凌晨1点45分28秒。若结果是负数就意味着是UTC前一天(即昨天),把这个负数加上2400就是UTC在前一天的时间。
例如,本地(北京)时间是 0325 (凌晨3点25分),那么,UTC就是 0325 - 0800 = -0475,负号意味着是前一天, -0475 + 2400 = 1925,既前一天的晚上7点25分。


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值