Python時間獲取詳解,Django獲取時間詳解,模板中獲取時間詳解(navie時間和aware時間)
阿新 • • 發佈:2018-12-09
# 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)