1. 程式人生 > >python時間處理(二)Datetime

python時間處理(二)Datetime

上一篇內容瞭解了time模組,接下來看下Datetime模組,這裡主要想解決的問題是如何計算兩個時間的差,並且返回秒,分鐘,小時,所以內容主要更偏向於解決問題,如果大家沒有看到自己需要的,最後會放上官方文件供大家參考。

首先看一下它具有的類及描述:

類名 描述
datetime.date 日期物件,屬性:yearmonth,和 day
datetime.time 時間物件,屬性:hourminutesecondmicrosecond 
和 tzinfo
datetime.datetime 日期和時間的組合物件,屬性:yearmonthdayhourminutesecondmicrosecond 和 tzinfo
datetime.timedelta 兩個日期或時間之間的差。
datetime.tzinfo 表示 UTC 時區的固定偏移,是 tzinfo 基類的實現
datetime.timezone 將 tzinfo 
抽象基類實現為與UTC的固定偏移量的類。

這裡需要注意的是datetime預設的兩個常量分別是MINYEAR和MAXYEAR,即最小年與最大年分別是1和9999

datetime.MINYEAR
#1

datetime.MAXYEAR
#9999

為大家科普一下常用的方法:)

  • datetime.date.today():返回當前時間,只會返回年月日。
  • datetime.date.fromtimestamp(timestamp):返回時間戳所對應的時間,只會返回年月日。
  • datetime.datetime.now():
    返回當前時間,返回值為年月日,小時,分鐘,秒,毫秒。
  • datetime.datetime.strptime('2018-11-20 15:51:24.482422',"%Y-%m-%d %H:%M:%S.%f"):按字串的格式返回datetime.datetime資料。
  • datetime.datetime.fromtimestamp(1542696019.5583735):返回時間戳所對應的時間,包含年月日,小時,分鐘,秒,微秒。
  • datetime.datetime.timestamp(datetime.datetime()):返回時間戳,輸入的是datetime.datetime型別資料。
datetime.date.today()
#datetime.date(2018, 11, 20)

datetime.date.fromtimestamp(1542696019.5583735)
#datetime.date(2018, 11, 20)

datetime.datetime.now()
#datetime.datetime(2018, 11, 20, 16, 4, 41, 186189)

datetime.datetime.strptime('2018-11-20 15:51:24.482422',"%Y-%m-%d %H:%M:%S.%f")
#datetime.datetime(2018, 11, 20, 15, 51, 24, 482422)

datetime.datetime.fromtimestamp(1542696019.5583735)
#datetime.datetime(2018, 11, 20, 14, 40, 19, 558373)

datetime.datetime.timestamp(datetime.datetime(2018, 11, 20, 14, 40, 19, 558373))
#1542696019.558373

 這裡提示大家一下,datetime.date.today()datetime.datetime.now()返回的值是datetime.datetime格式,可以直接用str(datetime.datetime.now())的方法將資料轉換為字串,方便進行儲存。例如str(a),返回的結果是個字串。

接下來進入正題:

首先建立兩個時間:

a = datetime.datetime.now()
b = datetime.datetime.now()
#注意這兩個時間是在不同時間建立的,所以值不相同。

將這兩個時間相減可得:

c = b-a
c
#datetime.timedelta(0, 283, 433989)
#上面是兩個時間相減產生的結果,返回的引數分別為天,秒,微秒

type(c)
#datetime.timedelta

依次呼叫 datetime.timedelta 的屬性:

c.days
#0
#天數

c.seconds
#283
#秒數

c.total_seconds()
#283.433989
#秒數加微秒的值

 結果就如上所示了,其實關鍵點就是要先將時間轉換成 datetime.datetime 形式,然後就可以直接做運算。

官方文件如下:datetime