Django 的時間格式處理範例
日期與時間永遠是專案中很重要的一部分,
不論是專案的起始與結束,
或者重要資訊的發布,
都與時間密切相關,
今天就來介紹:
Django 的時間格式處理範例
Django 的 model 中,
表示時間的格式有三種:
DateTimeField ,DateField,TimeField,
這些時間資料都有 auto_now 與 auto_now_add 參數,
當 auto_now 設定為 True,
則每次儲存時候,會更新時間欄位為現在時間,
但 auto_now_add 設定為 True 時,
此時間欄位只有在建立的時候將時間記錄下來,
特別要注意的此兩個參數只能一者為 True,
只要有一者為 True 此欄位就無法修改
若希望時間欄位能夠修改,
則需使用 default 指定預設時間,
上圖範例使用 default= date.today 作為預設時間,
而在程式碼中,
若要進行時間格式的轉換,
可透過 datetime(),date(),time() 中的各種方法來轉換,
例如
datetime.strptime(字串, “字串的時間格式”)
此方法是將 String 格式的時間轉成時間格式
date1 = datetime.datetime.strptime(col[5], '%Y-%m-%d')
上圖範例將文字格式的時間 2019-11-18 , 轉為 datetime 格式後輸出,
而 datetime.strftime(“時間格式”, 時間),
則是將時間依照指定的時間格式輸出為字串格式,
假設目前以今天的日期為範例 t1= datetime.now() ,
執行 print ( datetime.strftime(“%Y-%m-%d”, t1) ),
就會顯示:
2019-11-18
附帶一提的是時間格式的代號:
- %Y 四位數字的年份表示
- %y 兩位數字的年份表示
- %m 月份
- %d 日期
- %H 24小時制的時數
- %M 分
- %S 秒
- %b 月份的縮寫(例如:二月為Feb)
此外,
針對時間上的比較在此處舉一個範例:
today = datetime.datetime.now()
delta = datetime.timedelta(days=-14)
target_day = today+delta
#print(target_day)
all_courses = Tcourse.objects.filter(end_date__gte=target_day)
透過 datetime.timedelta 的方法取得時間的變化量,
再與現在的時間相加,
就能使用 filter 方式取得資料,
此處的範例是要取得開課結束時間以今天為基礎,
結束時間大於兩周前的課程。
其他查詢的方法還有:
- __gt 大於
- __gte 大於等於
- __lt 小於
- __lte 小於等於
- __range 在…範圍内
- __year 年份
- __month 月份
- __day 日
藉由這些方法就能夠取得與時間相關的數據。
================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================