首页 > 解决方案 > 使用相同的代码,python时间和日期时间模块,时差同时正确和错误

问题描述

我正在计算 api 和系统时间之间的时间差,代码工作正常,但显示不正确的结果。

url="Some url"

for sec in range(30):                                                              #30 times hitting
    time.sleep(1)                                                                  #time delay of 1 seconds, 30 hits ,2 sec so 60 second totally
    r = requests.get(url, params={}, headers = headers)                            # hitting the url after 2 seconds
    reqres = json.loads(r.text)
 time_in_api=reqres['last_updated_at_time']
    time_in_api=time.ctime(time_in_api/1000000)
    time_in_api_readable=datetime.datetime.strptime(str(time_in_api), "%a %b %d %H:%M:%S %Y")
    
    our_time=datetime.datetime.now()
    our_time = our_time.replace(microsecond=0)
    
    # calculation of time differance

    timediff=time_in_api_readable-our_time
    print(timediff,time_in_api_readable,our_time)

输出是,

0:00:02 2021-05-20 21:04:34 2021-05-20 21:04:32
0:00:00 2021-05-20 21:04:34 2021-05-20 21:04:34
0:00:01 2021-05-20 21:04:38 2021-05-20 21:04:37
0:00:00 2021-05-20 21:04:39 2021-05-20 21:04:39
0:00:01 2021-05-20 21:04:42 2021-05-20 21:04:41
-1 day, 23:59:59 2021-05-20 21:04:42 2021-05-20 21:04:43
0:00:01 2021-05-20 21:04:47 2021-05-20 21:04:46
-1 day, 23:59:59 2021-05-20 21:04:47 2021-05-20 21:04:48
0:00:01 2021-05-20 21:04:52 2021-05-20 21:04:51
-1 day, 23:59:58 2021-05-20 21:04:52 2021-05-20 21:04:54
-1 day, 23:59:55 2021-05-20 21:04:52 2021-05-20 21:04:57
-1 day, 23:59:53 2021-05-20 21:04:52 2021-05-20 21:04:59
-1 day, 23:59:50 2021-05-20 21:04:52 2021-05-20 21:05:02
-1 day, 23:59:47 2021-05-20 21:04:52 2021-05-20 21:05:05
-1 day, 23:59:44 2021-05-20 21:04:52 2021-05-20 21:05:08

标签: pythonpython-3.xdatetimepython-requests

解决方案


这似乎是人类阅读“timedelta”对象的问题。您可以考虑使用“total_seconds()”来解决您的问题。

import datetime


TimeNow = datetime.datetime.now()
TimeNow = TimeNow.replace(microsecond = 0)

TimeTenSecondsFromNow = TimeNow + datetime.timedelta(seconds = 10)


print ('TimeNow', TimeNow)
print ('TimeTenSecondsFromNow', TimeTenSecondsFromNow)


TimeDiff = TimeNow - TimeTenSecondsFromNow
print ('TimeDiff', TimeDiff)


DiffTotalSeconds = TimeDiff.total_seconds()
print ('DiffTotalSeconds', DiffTotalSeconds)

输出:

>>> TimeNow 2021-05-20 12:43:26
>>> TimeTenSecondsFromNow 2021-05-20 12:43:36
>>> TimeDiff -1 day, 23:59:50
>>> DiffTotalSeconds -10.0

推荐阅读