, <代码> DateField> 代码:可以记录年月日,映射到数据库是<代码> 代码>日期类型
2, <代码> DateTimeField> 代码:可以记录年月日时分秒,映射到数据库是<代码> datetime> 代码类型
3 <代码> TimeField> 代码:可以记录时分秒,映射到数据库是<代码>时间> 代码类型
钠碧叶时间和意识时间
-
<李>钠碧叶没有指定时区的,不知道自己的时间。李>
<李>注意指定了时区,知道自己的时间。李>
pytz库:专门用来处理时区的库,经常更新一些时区的数据
astimezone方法
将一个时区的时间转换为另一个时区的时间,这个方法只能被意识到的类型的时间调用,
不能被钠碧叶的类型的时间调用
进口pytz 从datetime进口datetime 现在=datetime.now() #这是一个钠碧叶类型的时间 utc_timezone=pytz.timezone (UTC) #定义UTC的时区对象 utc_now=now.astimezone (utc_timezone) #将当前时区时间转换为UTC时区的时间 在比;ValueError: astimezone()不能用于钠碧叶datetime #会抛出一个异常,原因就是因为钠碧叶类型的时间不能调用astimezone方法 现在=now.replace (tzinfo=pytz.timezone(亚洲/上海)) utc_now=now.astimezone (utc_timezone) #这时候就可以进行时区的转换 #更改时间
1,在<代码>设置。py> 代码中配置
TIME_ZONE='亚洲/上海' #时区的选择 #如果USE_TZ=False,那么django获取到的当前时间就是一个钠碧叶类型的时间, #网上很多资料写的是设置假,但是实际开发过程中设置事实 USE_TZ=True
2,在一个<代码>软件> 代码的数据模型中创建时间的字段
django。数据库导入模型 类ArticleModel (models.Model): ”“” 文章的模型 ”“” title=模型。CharField (max_length=100, verbose_name='文章标题”) create_time=models.DateTimeField (verbose_name='文章创建时间的) 类元(对象): db_table='文章' def __str__(自我): 返回“& lt; ArticleModel> ({}, {})“.format(自我。标题、self.create_time)
3,在视图类中手动的添加一条数据
django。快捷方式进口呈现 django。视图导入视图 #引入模块 从django.utils。时区现在导入,本地时间 从。导入模型 类ArticleView(观点): ”“” 文章的视图类 ”“” def get(自我,请求,* args, * * kwargs): models.ArticleModel.objects。创建(title='第一篇文章”,现在create_time=()) 返回渲染(请求,article.html)
4,查看数据库数据
实际上我这是差不多下午13点了,刚好相差8小时
5,查询出来的数据使用<代码>本地时间> 代码函数转换为本地时间
django。快捷方式进口呈现 django。视图导入视图 #引入模块 从django.utils。时区现在导入,本地时间 从。导入模型 类ArticleView(观点): ”“” 文章的视图类 ”“” def get(自我,请求,* args, * * kwargs): 结果=models.ArticleModel.objects.get (pk=1) 打印(结果) print(本地时间(result.create_time)) 返回渲染(请求,article.html)
6,在模板(<代码> html> 代码)中使用(自己会转换为你电脑本地时区的时间)
& lt; p>{{文章。标题}}& lt;/p> & lt; p>{{文章。create_time}} & lt;/p> & lt; !——直接使用django内置过滤器格式化数据——比; & lt; p>{{文章。create_time |日期:“Y-m-d H:我:“}}& lt;/p>
7,如果你在<代码>设置。py> 代码中<代码> TIME_ZONE=把侵?上海”代码>配置不同的时区,在用户页面展示的结果也会不一样的。
1,使用字段
create_time=模型。DateTimeField (auto_now_add=True, null=True, verbose_name=按唇ㄊ奔涞? update_time=模型。DateTimeField (auto_now=True, null=True, verbose_name=靶薷氖奔涞?详解django2中关于时间处理策略