Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个时间间隔的精确中间时间间隔_Python_Average_Python Datetime - Fatal编程技术网

Python 两个时间间隔的精确中间时间间隔

Python 两个时间间隔的精确中间时间间隔,python,average,python-datetime,Python,Average,Python Datetime,我试着在两次之间找到中间时间,这是我的代码,我试过了,但没有成功 import datetime import time start_time = datetime.datetime.now().time().strftime('5:00') end_time = datetime.datetime.now().time().strftime('7:00') total_time=(datetime.datetime.strptime(end_time,'%H:%M') + datetime.

我试着在两次之间找到中间时间,这是我的代码,我试过了,但没有成功

import datetime
import time
start_time = datetime.datetime.now().time().strftime('5:00')
end_time = datetime.datetime.now().time().strftime('7:00')
total_time=(datetime.datetime.strptime(end_time,'%H:%M') + 
datetime.datetime.strptime(start_time,'%H:%M'))
total_time = total_time / 2
print (total_time)

不能添加两个日期时间。Python(和大多数语言)区分时间戳和经过的时间(持续时间)。您可以执行的操作:

  • 到时间戳之间的差异为您提供了持续时间
  • 时间戳加上/减去持续时间会给您另一个时间戳
  • 持续时间算术:加,减去另一个持续时间,乘,除以常数
(当然,在许多不同语言的情况下,时间戳实际上是从预定时间点经过的时间,在这些情况下,两者可以互换使用,但不幸的是,在这种情况下并非如此。)


编辑:适用于开始时间在结束时间之后的情况(因此开始时间实际上在第二天)


strftime()
的参数不正确。它应该是一个类似于
%H:%M
的格式字符串。实际上并不是在格式化时间,它们相当于
start\u time='5:00'
end\u time='7:00'
。首先调用所有datetime函数有什么意义?
import datetime
import time

start_time = datetime.datetime.now().time().strftime('5:00')
end_time = datetime.datetime.now().time().strftime('7:00')

time1 = datetime.datetime.strptime(start_time,'%H:%M')
time2 = datetime.datetime.strptime(end_time,'%H:%M')

duration = time2 - time1
midtime = time1 + duration/2

print(midtime.strftime("%H:%M"))

# output
#06:00

import datetime

def midtime(time1, time2):
    # advance start time by 1 day if the start time is after the end time
    if time1 > time2:
        time1 += datetime.timedelta(1)

    duration = time2 - time1
    midtime = time1 + duration/2
    return midtime.strftime("%H:%M")

stime = datetime.datetime.strptime

print('Midtime between 8pm and 6am is', midtime(stime('20:00', '%H:%M'), stime('6:00', '%H:%M')))
print('Midtime between 7pm and 5am is', midtime(stime('19:00', '%H:%M'), stime('5:00', '%H:%M')))

print('Midtime between 6am and 8pm is', midtime(stime('6:00', '%H:%M'), stime('20:00', '%H:%M')))
print('Midtime between 5am and 7pm is', midtime(stime('5:00', '%H:%M'), stime('19:00', '%H:%M')))

# output
#Midtime between 8pm and 6am is 01:00
#Midtime between 7pm and 5am is 00:00
#Midtime between 6am and 8pm is 13:00
#Midtime between 5am and 7pm is 12:00