1.Python获取到的时间
import pytz
from datetime import datetime
now = datetime.now() # 这个时间为navie时间(自己不知道自己所处的时区)
print(now)
# 将时间转换为另一个时区的时间,此时会报错,因为此时的时间不知道自己所处的时区
# utc_timezone = pytz.timezone("UTC")
# now.astimezone(utc_timezone)
# >> ValueError: astimezone() cannot be applied to a naive datetime
# 先给时间指定时区,此时的时间变为aware时间(自己知道自己所处的时区)
now = now.replace(tzinfo=pytz.timezone("Asia/Shanghai"))
utc_timezone = pytz.timezone("UTC") # 定义UTC的时区对象
utc_now = now.astimezone(utc_timezone) # 将当前时间转换为UTC时区的时间
print(now)
print(utc_now)
2.Django项目下setting.py文件里
django.utils.timezone.now方法:会根据'setting.py'中设置的USE_TZ获取当前时间,
(USE_TZ=True会获取到一个aware时间,时区为UTC,USE_TZ=False,就会获取到一个navie时间)
django.utils.timezone.localtime方法:将一个aware时间,转换为本地时间('setting.py'中设置
的TIME_ZONE时区)
如果USE_TZ设置为False,那么Django获取到的当前时间就是一个navie时间,USE_TZ = True获取到的是
aware时间,且时区为UTC(因为Django ,now()函数的原因,和 python的now()函数不一样)
TIME_ZONE = 'Asia/Shanghai' 设置本地时间的时区
# 将UTC时间转换为本地时间
create_time = now() # Django通过now()获取到的是UTC时间
localtime(create_time)
3.在Django模板中将一个UTC时间转换为本地时间
{% load tz %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
# 导入的tz 带有localtime过滤器,可以将时间转换为本地时间
{{ create_time | localtime }}
# localtime不写,也会自动转换,{{ create_time | localtime }}
</body>
</html>
4.在model.py文件中写
class Article(models.Model):
# auto_now 每次save()保存数据的时候,都会更新当前时间,进数据库
# auto_now_add 只在第一次添加数据的时候,会将当前时间保存进数据库
title = models.CharField(max_length=200)
create_time = models.DateTimeField(auto_now=True)