總結程式執行中,時常需要獲取執行時間,或者獲取某階段時間差,本文介紹基於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:
("異常資訊_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:
("異常資訊_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(
("時間差為:"
+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 獲取時間差中的秒數,也就是...