国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解django2中關(guān)于時(shí)間處理策略

2020-01-04 13:35:17
字體:
供稿:網(wǎng)友

一、django中數(shù)據(jù)模型關(guān)于時(shí)間字段的認(rèn)識(shí)

1、 DateField :可以記錄年月日,映射到數(shù)據(jù)庫(kù)是 date 類型

2、 DateTimeField :可以記錄年月日時(shí)分秒,映射到數(shù)據(jù)庫(kù)是 datetime 類型

3、 TimeField :可以記錄時(shí)分秒,映射到數(shù)據(jù)庫(kù)是 time 類型

二、關(guān)于 navie 時(shí)間和 aware 時(shí)間的認(rèn)識(shí)

navie時(shí)間和aware時(shí)間

  • navie沒有指定時(shí)區(qū)的,不知道自己的時(shí)間。
  • aware指定了時(shí)區(qū),知道自己的時(shí)間。

pytz庫(kù):專門用來處理時(shí)區(qū)的庫(kù),經(jīng)常更新一些時(shí)區(qū)的數(shù)據(jù)

astimezone方法

將一個(gè)時(shí)區(qū)的時(shí)間轉(zhuǎn)換為另一個(gè)時(shí)區(qū)的時(shí)間,這個(gè)方法只能被'aware'類型的時(shí)間調(diào)用,

不能被'navie'類型的時(shí)間調(diào)用

import pytzfrom datetime import datetimenow = datetime.now() #這是一個(gè)navie類型的時(shí)間utc_timezone = pytz.timezone('UTC') #定義UTC的時(shí)區(qū)對(duì)象utc_now = now.astimezone(utc_timezone) #將當(dāng)前時(shí)區(qū)時(shí)間轉(zhuǎn)換為UTC時(shí)區(qū)的時(shí)間>> ValueError: astimezone() cannot be applied to a navie datetime# 會(huì)拋出一個(gè)異常,原因就是因?yàn)閚avie類型的時(shí)間不能調(diào)用astimezone方法now = now.replace(tzinfo=pytz.timezone('Asia/Shanghai'))utc_now = now.astimezone(utc_timezone)#這時(shí)候就可以進(jìn)行時(shí)區(qū)的轉(zhuǎn)換#更改時(shí)間

三、在 django 中正確的使用時(shí)間

1、在 settings.py 中配置

TIME_ZONE = 'Asia/Shanghai' # 時(shí)區(qū)的選擇# 如果USE_TZ=False,那么django獲取到的當(dāng)前時(shí)間就是一個(gè)navie類型的時(shí)間,# 網(wǎng)上很多資料寫的是設(shè)置False,但是實(shí)際開發(fā)過程中設(shè)置TrueUSE_TZ = True

2、在一個(gè) app 的數(shù)據(jù)模型中創(chuàng)建時(shí)間的字段

from django.db import modelsclass ArticleModel(models.Model): """ 文章的模型 """ create_time = models.DateTimeField(verbose_name='文章創(chuàng)建時(shí)間') class Meta(object): db_table = 'article' def __str__(self): return '<ArticleModel>({}, {})'.format(self.title, self.create_time)

3、在視圖類中手動(dòng)的添加一條數(shù)據(jù)

from django.shortcuts import renderfrom django.views import View# 引入模塊from django.utils.timezone import now, localtimefrom . import modelsclass ArticleView(View): """ 文章的視圖類 """ def get(self, request, *args, **kwargs): models.ArticleModel.objects.create(title='第一篇文章', create_time=now()) return render(request, 'article.html')

4、查看數(shù)據(jù)庫(kù)數(shù)據(jù)

實(shí)際上我這是差不多下午13點(diǎn)了,剛好相差8小時(shí)

django2,時(shí)間處理策略

5、查詢出來的數(shù)據(jù)使用 localtime 函數(shù)轉(zhuǎn)換為本地時(shí)間

from django.shortcuts import renderfrom django.views import View# 引入模塊from django.utils.timezone import now, localtimefrom . import modelsclass ArticleView(View): """ 文章的視圖類 """ def get(self, request, *args, **kwargs): result = models.ArticleModel.objects.get(pk=1) print(result) print(localtime(result.create_time)) return render(request, 'article.html')

6、在模板( html )中使用(自己會(huì)轉(zhuǎn)換為你電腦本地時(shí)區(qū)的時(shí)間)

<p>{{ article.title }}</p><p>{{ article.create_time }}</p><!--直接使用django內(nèi)置過濾器格式化數(shù)據(jù)--><p>{{ article.create_time | date:"Y-m-d H:i:s" }}</p>

7、如果你在 settings.py 中 TIME_ZONE = 'Asia/Shanghai' 配置不同的時(shí)區(qū),在用戶頁面展示的結(jié)果也會(huì)不一樣的。

四、在django中數(shù)據(jù)模型使用時(shí)間字段

1、使用字段

create_time = models.DateTimeField(auto_now_add=True, null=True, verbose_name='創(chuàng)建時(shí)間')update_time = models.DateTimeField(auto_now=True, null=True, verbose_name='修改時(shí)間')

2、關(guān)于auto_now_add的認(rèn)識(shí)

auto_now_add會(huì)在第一次添加數(shù)據(jù)的時(shí)候自動(dòng)獲取當(dāng)前時(shí)間

3、關(guān)于auto_now的認(rèn)識(shí)

auto_now會(huì)在每次對(duì)象調(diào)用save方法的時(shí)候更新為當(dāng)前時(shí)間

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 治多县| 荥经县| 阳谷县| 怀化市| 清流县| 乌拉特中旗| 广灵县| 凉城县| 新泰市| 义乌市| 江孜县| 台安县| 合山市| 和龙市| 洛隆县| 陇南市| 泰来县| 灌阳县| 洞头县| 盘锦市| 陵水| 盐池县| 巩留县| 常德市| 美姑县| 怀远县| 肇东市| 绵竹市| 岳池县| 贞丰县| 神池县| 龙里县| 韶山市| 错那县| 岐山县| 深泽县| 云安县| 台中县| 九龙县| 汾西县| 延川县|