python~time模組詳解
time模組
在開始之前,首先要說明這幾點:
在Python中,通常有這幾種方式來表示時間:1)時間戳 2)格式化的時間字串 3)元組(struct_time)共九個元素。由於Python的time模組實現主要呼叫C庫,所以各個平臺可能有所不同。
UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。
時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們執行“type(time.time())”,返回的是float型別。返回時間戳方式的函式主要有time(),clock()等。
元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函式主要有gmtime(),localtime(),strptime()。下面列出這種方式元組中的幾個元素:
1.time.localtime()
將一個時間戳轉換為當前時區的struct_time。若引數未提供,則以當前時間為準
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=16, tm_min=36, tm_sec=48, tm_wday=2, tm_yday=185, tm_isdst=0)
>>> time.localtime(1530692453.3236666)
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=16, tm_min=20, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0)
索引(Index) |
屬性(Attribute) |
值(Values) |
0 |
tm_year(年) |
比如2011 |
1 |
tm_mon(月) |
1 - 12 |
2 |
tm_mday(日) |
1 - 31 |
3 |
tm_hour(時) |
0 - 23 |
4 |
tm_min(分) |
0 - 59 |
5 |
tm_sec(秒) |
0 - 61 |
6 |
tm_wday(weekday) |
0 - 6(0表示週日) |
7 |
tm_yday(一年中的第幾天) |
1 - 366 |
8 |
tm_isdst(是否是夏令時) |
預設為-1 |
2.time.gmtime()
localtime是把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間,而gmtime函式轉換後的時間沒有經過時區變換,是UTC時間
和localtime()方法類似,gmtime()方法是將一個時間戳轉換為UTC時區(0時區)的struct_time
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=8, tm_min=38, tm_sec=48, tm_wday=2, tm_yday=185, tm_isdst=0)
>>> time.gmtime(1530692453.3236666)
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=8, tm_min=20, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0)
注意:這裡的tm_wday=2表示的是周幾,但是要在這個返回值的基礎上往後推一天,即表示的是週三,而不是週二
3.time.time()
返回當前時間的時間戳
>>> time.time()
1530693738.8271327
4.time.mktime(t)
將一個struct_time轉化為時間戳
>>> time.mktime(time.localtime())
1530693858.0
5.time.sleep(secs)
休眠,執行緒推遲指定的時間執行,單位為秒
>>> time.sleep(1)
>>> time.sleep(10)
6.time.clock()
WINDOWS中,第一次呼叫,返回的是程序執行的實際時間。而第二次之後的呼叫是自第一次呼叫以後到現在的執行時間。
>>> time.clock()
7.901231446427083e-07
>>> time.clock()
1.5485864499411557
>>> time.clock()
2.2367493385681625
>>> time.clock()
2.910795096969838
其中第一個clock()輸出的是程式執行時間
第二、三個、四個clock()輸出的都是與第一個clock的時間間隔
7.time.asctime()
把一個表示時間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'。如果沒有引數,將會將time.localtime()作為引數傳入。
>>> time.asctime()
'Wed Jul 4 16:56:34 2018'
8.time.ctime()
把一個時間戳(按秒計算的浮點數)轉化為time.asctime()的形式。如果引數未給或者為None的時候,將會預設time.time()為引數。它的作用相當於time.asctime(time.localtime(secs))。
>>> time.ctime(time.time())
'Wed Jul 4 17:06:20 2018'
>>> time.asctime(time.localtime())
'Wed Jul 4 17:07:46 2018'
9.time.strftime(format,[t])
把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字串。如果t未指定,將傳入time.localtime()
>>> time.strftime("%Y-%m-%d %H:%m:%S")
'2018-07-05 11:07:52'
>>> time.strftime("%Y-%m-%d %X",time.localtime())
'2018-07-05 11:28:04'
10.time.strptime(string,[format])
把一個格式化時間字串轉化為struct_time。實際上它和strftime()是逆操作。
>>> time.strptime("2018-07-05 11:07:52","%Y-%m-%d %X")
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=5, tm_hour=11, tm_min=7, tm_sec=52, tm_wday=3, tm_yday=186, tm_isdst=-1)
根據之前描述,在Python中共有三種表達方式:1)timestamp 2)tuple或者struct_time 3)格式化字串。
11.拼接定義的日期,包含中文
import time
import locale
locale.setlocale(locale.LC_CTYPE, 'chinese')
strTime=time.strftime("%Y年-%m月-%d日 %H:%M:%S",time.localtime())
print (strTime)
#輸出結果為:
2018年-09月-25日 09:46:39