time時間模組
阿新 • • 發佈:2019-02-04
目錄
#常用方法
1.time.sleep(secs)
(執行緒)推遲指定的時間執行。單位為秒。
2.time.time()
獲取當前時間戳
表示時間的三種方式
在Python中,通常有這三種方式來表示時間:時間戳、元組(struct_time)、格式化的時間字串:
(1)時間戳(timestamp)
通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們執行“type(time.time())”,返回的是float型別。
(2)格式化的時間字串(Format String): ‘1999-12-06’
python中時間日期格式化符號: %y 兩位數的年份表示(00-99) %Y 四位數的年份表示(000-9999) %m 月份(01-12) %d 月內中的一天(0-31) %H 24小時制小時數(0-23) %I 12小時制小時數(01-12) %M 分鐘數(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應的日期表示和時間表示 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天為星期的開始 %w 星期(0-6),星期天為星期的開始 %W 一年中的星期數(00-53)星期一為星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %號本身
(3)元組(struct_time)
struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)
索引(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 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示週一) |
7 | tm_yday(一年中的第幾天) | 1 - 366 |
8 | tm_isdst(是否是夏令時) | 預設為0 |
首先,我們先匯入time模組,來認識一下python中表示時間的幾種格式:
import time #匯入時間模組 #時間戳 print(time.time()) #1537367593.414602 #時間字串 print(time.strftime('%Y-%m-%d %H:%M:%S')) #2018-09-19 22:34:47 print(time.strftime("%Y-%m-%d %X")) #2018-09-19 22:34:47 #時間元組:localtime將一個時間戳轉換為當前時區的struct_time print(time.localtime()) #time.struct_time(tm_year=2018, tm_mon=9, tm_mday=19, tm_hour=22, tm_min=36, tm_sec=6, tm_wday=2, tm_yday=262, tm_isdst=0)
小結:時間戳是計算機能夠識別的時間;時間字串是人能夠看懂的時間;元組則是用來操作時間的
幾種格式之間的轉換
import time #匯入時間模組
#時間戳-->結構化時間
#time.gmtime(時間戳) #UTC時間,與英國倫敦當地時間一致
#time.localtime(時間戳) #當地時間。例如我們現在在北京執行這個方法:與UTC時間相差8小時,UTC時間+8小時 = 北京時間
print(time.gmtime(160000000)) #time.struct_time(tm_year=1975, tm_mon=1, tm_mday=26, tm_hour=20, tm_min=26, tm_sec=40, tm_wday=6, tm_yday=26, tm_isdst=0)
print(time.localtime(160000000)) #time.struct_time(tm_year=1975, tm_mon=1, tm_mday=27, tm_hour=4, tm_min=26, tm_sec=40, tm_wday=0, tm_yday=27, tm_isdst=0)
#結構化時間-->時間戳
#time.mktime(結構化時間
time_tuple = time.localtime(160000000)
print(time.mktime(time_tuple)) #160000000.0
#結構化時間-->字串時間
#time.strptime(時間字串,字串對應格式)
print(time.strptime('2018-09-19','%Y-%m-%d')) #time.struct_time(tm_year=2018, tm_mon=9, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=262, tm_isdst=-1)
print(time.strptime('09/19/2018','%m/%d/%Y')) #time.struct_time(tm_year=2018, tm_mon=9, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=262, tm_isdst=-1)
import time #匯入時間模組
#結構化時間 --> %a %b %d %H:%M:%S %Y串
#time.asctime(結構化時間) 如果不傳引數,直接返回當前時間的格式化串
print(time.asctime(time.localtime(1500000000))) #Fri Jul 14 10:40:00 2017
print(time.asctime()) #Wed Sep 19 22:57:17 2018
#%a %d %d %H:%M:%S %Y串 --> 結構化時間
#time.ctime(時間戳) 如果不傳引數,直接返回當前時間的格式化串
print(time.ctime()) #Wed Sep 19 22:57:58 2018
print(time.ctime(1600000000)) #Sun Sep 13 20:26:40 2020
import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('過去了%d年%d月%d天%d小時%d分鐘%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
struct_time.tm_mday-1,struct_time.tm_hour,
struct_time.tm_min,struct_time.tm_sec))
結果:過去了0年0月1天2小時30分鐘0秒