Python 計算系統時間差

2021-10-13 21:10:38 字數 4142 閱讀 3180

總結程式執行中,時常需要獲取執行時間,或者獲取某階段時間差,本文介紹基於windows系統獲取時間差方法。

可以跨年、月、日實現準確獲取時間差;

可以涵蓋系統返回帶毫秒(ms)時間及不含毫秒(ms)的時間;

如有其它需求可以在**上修改

import time

import datetime

import re

# 宣告所呼叫的庫函式

import time

import datetime

import re

class

duration

(object):

""" 計算時間

"""def__init__

(self, time_per, time_now, dos_log)

:"""

初始化...

:param time_per:開始時間

:param time_now:結束時間

:param dos_log:doslog控制代碼

"""self.time_per = time_per

self.time_now = time_now

self.dos_log = dos_log

# noinspection pymethodmaybestatic

defduration

(self)

:"""

呼叫函式,將傳入的time1和time2轉化為相同的格式

計算time1和time2之間的時間差

:return:時間差記過

"""try:

time1 = datetime.datetime.strptime(

str(self.time_per)

.strip(),

'%y-%m-%d %h:%m:%s.%f'

)except exception as e:

print

("異常資訊_time1:"

, e)

self.dos_log.write(

"["+

str(datetime.datetime.now())

+" recv]runtimes:"

+str

( self.runtimes)

+"異常資訊_time1\n"

)# 將讀取的資料寫入atlog檔案中

self.dos_log.flush(

) time1 = datetime.datetime.strptime(

str(self.time_per)

.strip(),

'%y-%m-%d %h:%m:%s'

)try

: time2 = datetime.datetime.strptime(

str(self.time_now)

.strip(),

'%y-%m-%d %h:%m:%s.%f'

)except exception as e:

print

("異常資訊_time2:"

, e)

self.dos_log.write(

"["+

str(datetime.datetime.now())

+" recv]runtimes:"

+str

( self.runtimes)

+"異常資訊_time2\n"

)# 將讀取的資料寫入atlog檔案中

self.dos_log.flush(

)# 重新整理緩衝區

time2 = datetime.datetime.strptime(

str(self.time_now)

.strip(),

'%y-%m-%d %h:%m:%s'

) data_str = time2 - time1

if re.

compile

("(\d+) day"

).findall(

str(data_str)):

days =

','.join(re.

compile

("(\d+) day"

).findall(

str(data_str)))

else

: days =

0if re.

compile

("\d+:\d+:\d+.\d+"

).findall(

str(data_str)):

hours =

','.join(re.

compile

("(\d+):\d+:\d+.\d+"

).findall(

str(data_str)))

minutes =

','.join(re.

compile

("\d+:(\d+):\d+.\d+"

).findall(

str(data_str)))

seconds =

','.join(re.

compile

("\d+:\d+:(\d+).\d+"

).findall(

str(data_str)))

microseconds =

','.join(re.

compile

("\d+:\d+:\d+.(\d+)"

).findall(

str(data_str)))

elif re.

compile

("\d+:\d+:\d+"

).findall(

str(data_str)):

hours =

','.join(re.

compile

("(\d+):\d+:\d+"

).findall(

str(data_str)))

minutes =

','.join(re.

compile

("\d+:(\d+):\d+"

).findall(

str(data_str)))

seconds =

','.join(re.

compile

("\d+:\d+:(\d+)"

).findall(

str(data_str)))

microseconds =

0else

: hours =

0 minutes =

0 seconds =

0 microseconds =

0 dur =

int(days)

*86400

+int

(hours)

*3600

+int

(minutes)*60

+int

(seconds)

+int

(microseconds)

/1000000

return dur

import duration

import time

import datetime

per_time = datetime.datetime.now(

)time.sleep(2)

now_time = datetime.datetime.now(

)dos_log =

open

("dos_log.txt"

,"w+"

)dur_time_instance = duration.duration(per_time, now_time, dos_log)

#例項化類

dur = dur_time_instance.duration(

)print

("時間差為:"

+str

(dur)

)

如上為個人實現計算時間差方法,目前使用正常,未遇到有無法計算時間的情況,僅供諸位碼有參考。

python計算時間差

import datetime d1 datetime.datetime 2005,2,16 d2 datetime.datetime 2004,12,31 d1 d2 days 上例演示了計算兩個日期相差天數的計算 import datetime starttime datetime.dateti...

Python 計算時間差

字串格式轉換為時間格式 timekeeper 0 timekeeper 1 為字串格式的日期形式,如 2019 11 15 17 32 24 start time.strptime timekeeper 0 y m d h m s end time.strptime timekeeper 1 y m...

Python計算時間差

from dateutil.parser import parse 輸入時間格式 a parse 2019 10 30 23 43 10.123 b parse 2019 10 28 09 08 13.56212 a b days 獲取天數的時間差 a b seconds 獲取時間差中的秒數,也就是...