方法一:

在setting.py中,修改如下三个参数:


LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

USE_TZ = False

即可完成,在使用 DateTimeField 来创建时间时,配置了上边三个参数,保存在数据库的时间就是中国时间。

以下是没有设置上边三个参数和配置的三个参数的区别:

默认是英国格林威治UTC时间,比国时晚了8小时!

方法二:

如果在数据库中你已经存了UTC的时间,在前台显示时,需要转化成国时(也就是本地时间),可以用 localtime 方法

localtime : 会根据settings.py中的 TIME_ZONE 将一个aware类型 的时间转化为TIME_ZONE指定时区的时间。

from django.utils.timezone import localtime # 导出localtime方法
from django.shortcuts import render # 导出render方法
from apps.text_three.models import Text as Person_model #引入模型类

def index(res):
    create_time = Person_model.objects.get(pk=5)

    print("数据库取出来的时间为:{}".format(create_time.create_time))
    print("转化为当地时间为:{}".format(localtime(create_time.create_time)))

    return render(res, 'test_html.html')

 

补充:

通常情况下,正规配置是在settings.py中设置USE_TZ= True,这样存到数据中的是一个UTC时间,当你的网站或系统国际化时,尤为重要,如果网站在中国发布,那么返给前台的时间可以使用上边localtime方法处理之后,返给前端。

TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐