Django 的時間格式處理範例

首頁 >> 結帳英文 >> Django 的時間格式處理範例

日期與時間永遠是專案中很重要的一部分,

不論是專案的起始與結束,

或者重要資訊的發布,

都與時間密切相關,

今天就來介紹:

Django 的時間格式處理範例

Django 的 model 中,

表示時間的格式有三種:

DateTimeField DateFieldTimeField

這些時間資料都有 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 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

發表迴響