time和datetime的常用方法
阿新 • • 發佈:2020-12-13
1.time模組
time模組以下時間表示方法。
- 第1種是:時間戳的方式。是基於1970年1月1日0時0分0秒的偏移。浮點數。
- 第2種是:struct_time()型別的表示方法。gmtime()和localtime()可以將時間戳顯示為struct_time()型別。
- 第3種是:格式化時間。其中strftime()函式可以把struct_time()時間格式化顯示。
1.1time模組的三類函式
1、時間獲取:time()ctime()gmtime()
- time.time() 獲取當前時間,浮點數
import time print(time.time()) # 1607849520.680959
- time.ctime()獲取當前時間並以易讀方式表示,返回字串
import time print(time.ctime()) # Sun Dec 13 16:52:34 2020
- time.gmtime()表示為計算機可處理的格式
import time print(time.gmtime()) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=13, tm_hour=8, tm_min=53, tm_sec=20, tm_wday=6, tm_yday=348, tm_isdst=0)
2、時間格式化:strftime() strptime()
- time.strftime(format[,t]): 根據引數轉換一個sturc_time或元組為字串。
import time print(time.strftime("%Y-%m-%d", time.localtime())) # 2020-12-13
- time.strptime(string[, format]): 與strftime相反,返回一個struct_time。
import time print(time.strptime("2020-12-13 16:56:22", "%Y-%m-%d %X")) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=13, tm_hour=16, tm_min=56, tm_sec=22, tm_wday=6, tm_yday=348, tm_isdst=-1)
3、程式計時:sleep()perf_counter()
- time.perf_counter() 返回一個cpu級別的精準時間計數值,單位為秒 計數值不缺定,連續呼叫差值有意義
- time.sleep(s) s是休眠的時間 單位可以是秒可以是浮點數
import time time.sleep(2) print("暫停:", time.perf_counter()) # 暫停: 2.0616361
2.datetime模組
datetime是python當中比較常用的時間模組,主要是輸出格式化和操作提供高效的屬性提取功能。
datetime.date | 表示日期,常用的屬性有:year, month和day |
datetime.time | 表示時間,常用屬性有:hour, minute, second, microsecond |
datetime.datetime | 表示日期時間 |
datetime.timedelta | 表示兩個date、time、datetime例項之間的時間間隔,解析度(最小單位)可達到微秒 |
datetime.tzinfo | 時區相關資訊物件的抽象基類。它們由datetime和time類使用,以提供自定義時間的而調整。 |
datetime.timezone | 實現tzinfo抽象基類的類,表示與UTC的固定偏移量 |
1、datetime.datetime
- datetime.datetime.now():返回系統當前時間(2020-07-1618:39:55.921602)
- datetime.datetime.now().date():返回當前時間的日期(2020-07-16)
- datetime.datetime.now().time():返回當前時間的時分秒(18:40:24.946237)
- datetime.datetime.ctime():將datetime.datetime型別轉化成str型別
import datetime a = datetime.datetime.now() print(a) # 2020-12-13 17:04:35.186835 timeapp = datetime.datetime.ctime(a) print(type(timeapp)) # <class 'str'> print(timeapp) # Sun Dec 13 17:03:36 2020
時間格式轉化成字串
import datetime print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # 2020-12-13 17:07:04
字串轉化成時間格式
a = datetime.datetime.strptime('2020-12-13 17:08:36', '%Y-%m-%d %H:%M:%S') print(type(a)) # <class 'datetime.datetime'> print(a) # 2020-12-13 17:08:36
2、datetime.timedelta
timedelta物件表示兩個不同時間之間的差值。如果使用time模組對時間進行算術執行,只能將字串格式的時間和struct_time格式的時間物件先轉換為時間戳格式,然後對該時間戳加上或減去n秒,最後再轉換回struct_time格式或字串格式,這顯然很不方便。而datetime模組提供的timedelta類可以讓我們很方面的對datetime.date, datetime.time和datetime.datetime物件做算術運算,且兩個時間之間的差值單位也更加容易控制。
datetime.timedelta()新增引數,如計算300天是幾號。
import datetime timeapp = datetime.datetime.now().date() print(type(timeapp)) # <class 'datetime.date'> print(timeapp) # 2020-12-13 delta = datetime.timedelta(days=300) print(timeapp - delta) # 2020-02-17
datetime.timedelta()也可以多個引數,如計算300天12小時前的時間。
import datetime timeapp = datetime.datetime.now() print(type(timeapp)) # <class 'datetime.datetime'> print(timeapp) # 2020-12-13 17:14:35.253393 delta = datetime.timedelta(days=300, hours=12) print(timeapp - delta) # 2020-02-17 05:14:35.253393
計算天數和秒數。
import datetime print(datetime.timedelta(days=1, hours=32).days) # 2 print(datetime.timedelta(days=1, hours=32).total_seconds()) # 201600.0