Python模組:time模組

choubou發表於2021-09-09

time模組:

python中處理時間的基礎模組,有時間戳,元組,自定義,三種時間表現形式。

python中時間戳的值是以1970年1月1日0點開始計算的,單位是秒。

時間戳:就是兩個時間差的數值。

時區:傳說中在開發伺服器/客戶端程式時,時區不一致,會影響 程式的功能。(以後再討論)

 

  • time模組方法:

方法名
作用
示例
結果
time()
返回當前時間戳 time.time() 1516071879.0688217
localtime(時間戳)

返回時間戳的當前時區格式化元組

時間戳預設當前時間

time.localtime()

time.localtime(1516076520.4596064)

與gmtime結果相同
gmtime(時間戳)

返回時時間戳的0時區格式化元組

時間戳預設當前時間

time.gmtime()

time.gmtime(1516076520.4596064)

time.struct_time(tm_year=2018, tm_mon=1, tm_mday=16, tm_hour=4, tm_min=22, tm_sec=0, tm_wday=1, tm_yday=16, tm_isdst=0)
altzone 返回格林威治西部的夏令時地區的偏移秒數。如果該地區在格林威治東部會返回負值(如西歐,包括英國)。對夏令時啟用地區才能使用。 time.altzone 返回一個整數
tzset() 使用環境變數TZ的值,重新初始化時間相關設定。無返回值。 time.tzset() 無返回值,列印時間顯示TZ更改後的結果
TZ環境變數的設定

格式:std offset [dst [offset [,start[/time], end[/time]]]]

 

os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'

列印時間

05:00:40 02/18/09 AEDT

timezone 屬性time.timezone是當地時區(未啟動夏令時)距離格林威治的偏移秒數(>0,美洲; time.timezone
tzname 屬性time.tzname包含一對根據情況的不同而不同的字串,分別是帶夏令時的本地時區名稱,和不帶的。 time.tzname
asctime(時間元組)

返回一個固定格式的時間

時間格式是元組格式

預設以time.localtime()為引數返回當前時間

time.asctime()

或:

time.asctime((2018, 1, 16, 4, 22, 0, 1, 16, 0))

Tue Jan 16 07:19:10 2018
ctime(時間戳)

返回一個固定格式的時間,與asctime格式相同

時間格式是時間戳

預設以time.time()為引數,返回當前時間

time.ctime()

time.ctime(1516076520.4596064)

Tue Jan 16 04:22:00 2018
mktime(時間元組)

返回時間戳,不可預設引數

把時間元組轉變成時間戳,精確到秒

mktime((2018, 1, 16, 4, 22, 0, 1, 16, 0))

 

1516076520.0
clock()

返回當前cpu的時間,用於計算程式的耗時,浮點型;不受time.sleep影響。

Windows下,在第一次呼叫的時候,返回的是程式執行的實際時間;以第二次之後的呼叫,返回的是自第一次呼叫後,到這次呼叫的時間間隔

在Unix/Linux下返回的是CPU時間

time.clock()

返回一個時間戳,例如:

0.022192

sleep(秒數) 推遲呼叫執行緒的執行,可透過引數指定秒數,表示程式掛起的時間。

a = time.time()

time.sleep(10)

print(time.time()-a)

10.004650831222534

因為包含了指今執行時間,所以有小數產生

strftime(格式,時間元組)

把時間元組轉變成指定格式

格式相當於當格式化字串的使用

時間元組可以是localtime和gmtime提供

 

time.strftime('哈哈,這是一個時間%Y-%m?隨便寫點%d',((018, 1, 16, 4, 22, 0, 1, 16, 0)) 哈哈,這是一個時間2018-01?隨便寫點16
strptime(字串,格式)

根據指定的格式把一個時間字串解析為時間元組。

通常把字串裡指定位置的值用%替代掉

time.strptime('哈哈,這是一個時間2018-01?隨便寫點16','哈哈,這是一個時間%Y-%m?隨便寫點%d')

time.struct_time(tm_year=2018, tm_mon=1, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=16, tm_isdst=-1)

各方法關係圖:

圖片描述





  • 時間元組的格式說明:

    (2018, 1, 16, 4, 22, 0, 1, 16, 0)

    time.struct_time(tm_year=2018, tm_mon=1, tm_mday=16, tm_hour=4, tm_min=22, c=0, tm_wday=1, tm_yday=16, tm_isdst=0)


元組序號
struct_time名

說明
對應格式化符號
0
tm_year
2018
tm_year(年)  比如2011 %Y或%y
1
tm_mon
1
tm_mon(月)  1 - 12 %m
2
tm_mday
16
tm_mday(日)  1 - 31 %d
3
tm_hour
4
tm_hour(時)  0 - 23 %H
4
tm_min 22
tm_min(分)  0 - 59 %M
5
c 0
tm_sec(秒)  0 - 61 %S
6 tm_wday 1 tm_wday(weekday)  0 - 6(0表示週日) %w
7 tm_yday 16 tm_yday(一年中的第幾天)  1 - 366 %j
8 tm_isdst 0 tm_isdst(是否是夏令時)  預設為-1

備註:

讀取某一屬性 time.gmtime().tm_year 或 time.gmtime()[0]



  • 格式化符號含義說明

格式 含義 備註
%a  本地(locale)簡化星期名稱                
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期和時間表示
%d 一個月中的第幾天(01 - 31)
%H 一天中的第幾個小時(24小時制,00 - 23)
%I 第幾個小時(12小時制,01 - 12)
%j 一年中的第幾天(001 - 366)
%m 月份(01 - 12)
%M 分鐘數(00 - 59)
%p 本地am或者pm的相應符 1
%S 秒(01 - 61) 2
%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。 3
%w 一個星期中的第幾天(0 - 6,0是星期天) 3
%W 和%U基本相同,不同的是%W以星期一為一個星期的開始。
%x 本地相應日期
%X 本地相應時間
%y 去掉世紀的年份(00 - 99)
%Y 完整的年份
%Z 時區的名字(如果不存在為空字元)
%% ‘%’字元

備註:

  1. “%p”只有與“%I”配合使用才有效果。

  2. 文件中強調確實是0 - 61,而不是59,閏年秒佔兩秒(汗一個)。

  3. 當使用strptime()函式時,只有當在這年中的週數和天數被確定的時候%U和%W才會被計算。

  • 一些例子:


    1、當時時間的前三天

#方法一:時間戳上加減一天的時間間隔:86400秒

import time

print(time.ctime(time.time()-86400*3))

 

#方法二:把當前時間轉換成元組,再轉換成列表(可修改),修改後再改回元組

import time

aa = list(time.gmtime())

aa[2] -= 3

aa = tuple(aa)

print(time.asctime(aa))

    2、給定元組格式轉換時間戳

a = (2018, 1, 16, 4, 22, 0, 1, 16, 0)

print(time.mktime(a))

    3、常用時間格式:

now_tuple = time.gmtime()

split_1 = time.strftime("%Y/%m/%d %H:%M:%S", now_tuple)

split_2 = time.strftime("%Y-%m-%d %H:%M:%S", now_tuple)


 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4548/viewspace-2809826/,如需轉載,請註明出處,否則將追究法律責任。

相關文章