1. 程式人生 > >Python時間獲取詳解,Django獲取時間詳解,模板中獲取時間詳解(navie時間和aware時間)

Python時間獲取詳解,Django獲取時間詳解,模板中獲取時間詳解(navie時間和aware時間)

# 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)