【python】詳解time模組功能asctime、localtime、mktime、sleep、strptime、strftime、time等函式以及時間的加減運算
在Python中,與時間處理相關的模組有:time、datetime以及calendar。學會計算時間,對程式的調優非常重要,可以在程式中狂打時間戳,來具體判斷程式中哪一塊耗時最多,從而找到程式調優的重心處。這裡先來講一個time模組。
time模組所包含的函式能夠實現以下功能:獲取當前的時間、操作時間和日期、從字串讀取時間及格式化時間為字串。
- timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量;返回時間戳的函式主要有time()、clock()等
- struct_time時間元組,共有九個元素組。gmtime(),localtime(),strptime()
- format time 格式化時間,已格式化的結構使時間更具可讀性。包括自定義格式和固定格式。
不同格式之間的轉換如圖:
其中format_string 型別的時間和struct_time之間可以轉換,timestamp時間戳可以和struct_time之間進行轉化,但是時間戳和格式化時間是不能直接轉換的。
struct_time元組結構:
format time結構化表示:
1、time.time()當前時間的時間戳,返回float資料,自1970年1月1日開始按照秒計算的偏移量,可以進行差值計算得到秒差
In [1]: import time
#首先定義第一個時間點的時間戳a
In [2]: a = time.time()
計算當前時間點的時間與a之間的時間間隔,以秒為單位
In [3]: b = time.time() -a
In [4]: b
Out[4]: 10.753291130065918
2、time.clock()該函式有兩個功能:
- 在第一次呼叫的時候,返回的是程式執行的實際時間;
- 以第二次之後的呼叫,返回的是自第一次呼叫後,到這次呼叫的時間間隔
- 在win32系統下,這個函式返回的是真實時間(wall time),而在Unix/Linux下返回的是CPU時間。
#第一次呼叫時,返回程式實際的執行時間
In [6]: time.clock()
Out[6]: 4.266666666666667e-07
#第二次呼叫返回的是距離上一次呼叫的時間間隔
In [7]: time.clock()
Out[7]: 3.48674048
#該次呼叫返回的是距離上一次呼叫的時間間隔
In [8]: time.clock()
Out[8]: 7.2176200533333335
3、time.gmtime([secs])可以將timestamp時間戳轉化為時間元組
#如果沒有給定時間戳,直接返回當前時點的國際倫敦時間
In [5]: time.gmtime()
Out[5]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=14, tm_min=49, tm_sec=37, tm_wday=4, tm_yday=12, tm_isdst=0)
#可以將時間戳轉化為國際時間
In [9]: a = time.time()
In [10]: time.gmtime(a)
Out[10]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=15, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)
4、time.localtime([secs])可以將timestamp時間戳轉為時間元組
#可以將時間戳轉為本地時間
In [13]: time.localtime()
Out[13]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=6, tm_sec=14, tm_wday=4, tm_yday=12, tm_isdst=0)
#如果沒有給定時間戳,直接返回當前時點的本地時間
In [12]: time.localtime(a)
Out[12]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)
5、time.mktime(t):將一個struct_time轉化為時間戳
time.mktime() 函式執行與gmtime(), localtime()相反的操作,它接收struct_time物件作為引數,返回用秒數表示時間的浮點數。如果輸入的值不是一個合法的時間,將觸發 OverflowError 或 ValueError。
- 引數:t – 結構化的時間或者完整的9位元組元素
#將struct_time時間元組轉化為時間戳
In [14]: time.mktime(time.localtime())
Out[14]: 1515770088.0
6、time.sleep(secs):執行緒推遲指定的時間執行 執行緒睡眠指定時間,單位為秒。
In [15]: time.time()
...: for i in range(3):
...: print(i)
...: time.sleep(5)
...: time.time()
...:
0
1
2
Out[15]: 1515770366.3641038
7、time.asctime([t])*生成固定格式的時間表示格式,把一個表示時間的元組或者struct_time*表示為’Sat Jan 13 21:56:34 2018’這種形式。如果沒有給引數,會將time.localtime()作為引數傳入。
- 引數:t – 9個元素的元組或者通過函式 gmtime() 或 localtime() 返回的時間值;
In [1]: import time
In [2]: time.asctime()
Out[2]: 'Sat Jan 13 21:56:34 2018'
8、time.ctime([secs]) 生成固定格式的時間表示格式,把一個時間戳(按秒計算的浮點數)轉化為time.asctime()的形式。如果為指定引數,將會預設使用time.time()作為引數。它的作用相當於time.asctime(time.localtime(secs)) 。
- 引數:sec – 要轉換為字串時間的秒數
In [4]: time.time()
Out[4]: 1515852108.7154894
In [5]: time.ctime(time.time())
Out[5]: 'Sat Jan 13 22:01:56 2018'
In [6]: a = time.time()
In [7]: time.ctime(a)
Out[7]: 'Sat Jan 13 22:02:05 2018'
9、time.strftime( format [, t] ) 通過函式將struct_time轉成格式字串,把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字串,格式由引數format決定。如果未指定,將傳入time.localtime()。如果元組中任何一個元素越界,就會丟擲ValueError的異常。函式返回的是一個可讀表示的本地時間的字串。
引數:
- format:格式化字串
- t :可選的引數是一個struct_time物件
#將時間元組轉化為format年月日格式
In [15]: time.strftime("%Y-%m-%d",time.gmtime())
Out[15]: '2018-01-13'
#%X返回當地時間
In [17]: time.strftime("%Y-%m-%d %X")
Out[17]: '2018-01-13 22:16:35'
#返回當地的日期和時間
In [18]: time.strftime("%x %X")
Out[18]: '01/13/18 22:17:14'
#直接使用字串拼接成格式時間字串
In [21]: tt = time.gmtime()
In [22]: str(tt.tm_year) + "年" + str(tt.tm_mon) + "月" + str(tt.tm_mday) + "日"
Out[22]: '2018年1月13日'
10、time.strptime(string,format) 將格式字串轉化成struct_time。該函式是time.strftime()函式的逆操作。time.strptime() 函式根據指定的格式把一個時間字串解析為時間元組。所以函式返回的是struct_time物件。
- 引數:string :時間字串;format:格式化字串;
#建立一個時間字串變數strtime
strtime = "2018-01-13 22:20:30"
#通過strptime()函式將strtime轉化成strcut_time形式,格式引數必須的"%Y-%m-%d %H:%M:%S",且必須strtime的時間引數一一匹配
In [27]: time.strptime(strtime,"%Y-%m-%d %H:%M:%S")
Out[27]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=13, tm_hour=22, tm_min=20, tm_sec=30, tm_wday=5, tm_yday=13, tm_isdst=-1)
11、time加減主要是通過時間戳的方式進行加減
In [28]: a = time.time()
In [29]: b = time.time()
In [30]: a+b
Out[30]: 3031709297.679469
In [31]: b-a
Out[31]: 10.370728731155396
相關文章
- Python中time, strftime和strptimePython
- strftime()函式,方便的時間操作函式
- python strftime和strptime的不同分析Python
- php時間戳函式mktime()PHP時間戳函式
- C時間函式strftime、struct timespec 和 struct timeval函式Struct
- Linux常用C函式-asctime,ctime,getttimeofday等Linux函式
- PHP函式mktimePHP函式
- golang time 時間的加減法Golang
- timestamp型別的加減運算型別
- "undefined reference to strptime"之自己定義strptime函式Undefined函式
- localtime函式的死鎖風險函式
- python時間模組time和datetimePython
- Python中操作時間之strptime()方法的使用Python
- python用time函式計算程式執行時間Python函式
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- C++(asctime()、ctime())C++
- Qt中時鐘時間功能QTime詳解QT
- python中time.mktime()的轉換Python
- linux系統時間程式設計(6) 日曆時間tm轉字串strftime函式Linux程式設計字串函式
- Python之time模組詳解Python
- python—time模組使用詳解Python
- windows平臺時間函式效能比較QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTimeWindows函式ORM
- 徹底搞清楚 C/C++ 中日期和時間 time_t 與 struct tm,time(NULL),ctime;strftimeC++StructNull
- SDUST OJ 時間類的加、減法賦值運算賦值
- 使用jiffies的時間比較函式time_after、time_before函式
- Python模組學習:time 日期時間處理Python
- 在C程式中按照你想要的格式輸出時間:strftime()C程式
- 常用API(一):1.JDK8新增的時間 2.LocalDate 3.LocalTime 4.LocalDateTimeAPIJDKLDA
- python,時間加減,時間計算,時間格式化,時間提取彙總Python
- Python模組:time模組Python
- 延時函式delay() sleep() Sleep()函式
- python獲取系統時間(時間函式詳解)Python函式
- 有關struct timeval結構體 以及 gettimeofday()函式Struct結構體函式
- python:time模組Python
- c語言學習--time庫函式詳解C語言函式
- Python time模組詳解(時間戳↔元組形式↔格式化形式三者轉化)Python時間戳
- TimeDateCalculator for mac 時間計算器Mac
- 時間函式的簡單理解和應用(time.h)函式