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含义完全相同。

python的utc8小时时间问题_第1张图片

北京时区是东八区,领先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分。


你可能感兴趣的:(python,8小时,UTC)