一、django
中資料模型關於時間欄位的認識
- 1、
DateField
:可以記錄年月日,對映到資料庫是date
型別 - 2、
DateTimeField
:可以記錄年月日時分秒,對映到資料庫是datetime
型別 - 3、
TimeField
:可以記錄時分秒,對映到資料庫是time
型別
二、關於navie
時間和aware
時間的認識詳細檢視
三、在django
中正確的使用時間
-
1、在
settings.py
中配置TIME_ZONE = 'Asia/Shanghai' # 時區的選擇 # 如果USE_TZ=False,那麼django獲取到的當前時間就是一個navie型別的時間, # 網上很多資料寫的是設定False,但是實際開發過程中設定True USE_TZ = True 複製程式碼
-
2、在一個
app
的資料模型中建立時間的欄位from django.db import models class ArticleModel(models.Model): """ 文章的模型 """ title = models.CharField(max_length=100, verbose_name='文章標題') create_time = models.DateTimeField(verbose_name='文章建立時間') class Meta(object): db_table = 'article' def __str__(self): return '<ArticleModel>({}, {})'.format(self.title, self.create_time) 複製程式碼
-
3、在檢視類中手動的新增一條資料
from django.shortcuts import render from django.views import View # 引入模組 from django.utils.timezone import now, localtime from . import models class ArticleView(View): """ 文章的檢視類 """ def get(self, request, *args, **kwargs): models.ArticleModel.objects.create(title='第一篇文章', create_time=now()) return render(request, 'article.html') 複製程式碼
-
4、檢視資料庫資料
實際上我這是差不多下午13點了,剛好相差8小時
-
5、查詢出來的資料使用
localtime
函式轉換為本地時間from django.shortcuts import render from django.views import View # 引入模組 from django.utils.timezone import now, localtime from . import models class 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') 複製程式碼
# 返回結果 <ArticleModel>(第一篇文章, 2019-02-28 04:56:43.296133+00:00) 2019-02-28 12:56:43.296133+08:00 複製程式碼
-
6、在模板(
html
)中使用(自己會轉換為你電腦本地時區的時間)<p>{{ article.title }}</p> <p>{{ article.create_time }}</p> <!--直接使用django內建過濾器格式化資料--> <p>{{ article.create_time | date:"Y-m-d H:i:s" }}</p> 複製程式碼
-
7、如果你在
settings.py
中TIME_ZONE = 'Asia/Shanghai'
配置不同的時區,在使用者頁面展示的結果也會不一樣的。
四、在django
中資料模型使用時間欄位
-
1、使用欄位
create_time = models.DateTimeField(auto_now_add=True, null=True, verbose_name='建立時間') update_time = models.DateTimeField(auto_now=True, null=True, verbose_name='修改時間') 複製程式碼
-
2、關於
auto_now_add
的認識auto_now_add
會在第一次新增資料的時候自動獲取當前時間 -
3、關於
auto_now
的認識auto_now
會在每次物件呼叫save
方法的時候更新為當前時間