在平常的代碼中照宝,我們常常需要與時(shí)間打交道。在Python中厕鹃,與時(shí)間處理有關(guān)的模塊就包括:time,datetime,calendar(很少用熊响,不講),下面分別來(lái)介紹汗茄。
我們寫(xiě)程序時(shí)對(duì)時(shí)間的處理可以歸為以下3種:
時(shí)間的顯示,在屏幕顯示洪碳、記錄日志等
時(shí)間的轉(zhuǎn)換,比如把字符串格式的日期轉(zhuǎn)成Python中的日期類型
時(shí)間的運(yùn)算瞳腌,計(jì)算兩個(gè)日期間的差值等
time模塊
在Python中,通常有這幾種方式來(lái)表示時(shí)間:
時(shí)間戳(timestamp), 表示的是從1970年1月1日00:00:00開(kāi)始按秒計(jì)算的偏移量儿捧。例子:1554864776.161901
格式化的時(shí)間字符串挑宠,比如“2020-10-03 17:54”
元組(struct_time)共九個(gè)元素。由于Python的time模塊實(shí)現(xiàn)主要調(diào)用C庫(kù)各淀,所以各個(gè)平臺(tái)可能有所不同,mac上:time.struct_time(tm_year=2020, tm_mon=4, tm_mday=10, tm_hour=2, tm_min=53, tm_sec=15, tm_wday=2, tm_yday=100, tm_isdst=0)
索引(Index)? ? 屬性(Attribute)? ? 值(Values)
0? ? tm_year(年)? ? ? ? ? ? ? ? 比如2011
1? ? tm_mon(月)? ? ? ? ? ? ? ? ? 1 - 12
2? ? tm_mday(日)? ? ? ? ? ? ? ? 1 - 31
3? ? tm_hour(時(shí))? ? ? ? ? ? ? ? 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(是否是夏令時(shí))? ? ? ? 默認(rèn)為-1
UTC時(shí)間
UTC(Coordinated Universal Time璃俗,世界協(xié)調(diào)時(shí))亦即格林威治天文時(shí)間,世界標(biāo)準(zhǔn)時(shí)間城豁。在中國(guó)為UTC+8麦牺,又稱東8區(qū)。DST(Daylight Saving Time)即夏令時(shí)剖膳。
time模塊的方法
time.localtime([secs]):將一個(gè)時(shí)間戳轉(zhuǎn)換為當(dāng)前時(shí)區(qū)的struct_time。若secs參數(shù)未提供甸饱,則以當(dāng)前時(shí)間為準(zhǔn)仑濒。
time.gmtime([secs]):和localtime()方法類似,gmtime()方法是將一個(gè)時(shí)間戳轉(zhuǎn)換為UTC時(shí)區(qū)(0時(shí)區(qū))的struct_time驼壶。
time.time():返回當(dāng)前時(shí)間的時(shí)間戳喉酌。
time.mktime(t):將一個(gè)struct_time轉(zhuǎn)化為時(shí)間戳。
time.sleep(secs):線程推遲指定的時(shí)間運(yùn)行,單位為秒泪电。
time.asctime([t]):把一個(gè)表示時(shí)間的元組或者struct_time表示為這種形式:’Sun Oct 1 12:04:38 2019’。如果沒(méi)有參數(shù)碟渺,將會(huì)將time.localtime()作為參數(shù)傳入突诬。
time.ctime([secs]):把一個(gè)時(shí)間戳(按秒計(jì)算的浮點(diǎn)數(shù))轉(zhuǎn)化為time.asctime()的形式。如果參數(shù)未給或者為None的時(shí)候绒极,將會(huì)默認(rèn)time.time()為參數(shù)催束。它的作用相當(dāng)于time.asctime(time.localtime(secs))抠刺。
time.strftime(format[, t]):把一個(gè)代表時(shí)間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉(zhuǎn)化為格式化的時(shí)間字符串塔淤。如果t未指定高蜂,將傳入time.localtime()罕容。
舉例:time.strftime(“%Y-%m-%d %X”, time.localtime()) #輸出’2017-10-01 12:14:23’
time.strptime(string[, format]):把一個(gè)格式化時(shí)間字符串轉(zhuǎn)化為struct_time。實(shí)際上它和strftime()是逆操作露泊。
舉例:time.strptime(‘2017-10-3 17:54’,”%Y-%m-%d %H:%M”) #輸出 time.struct_time(tm_year=2017, tm_mon=10, tm_mday=3, tm_hour=17, tm_min=54, tm_sec=0, tm_wday=1, tm_yday=276, tm_isdst=-1)