如何将pandas Timedelta添加到特定业务和工作时间范围的时间戳中



我想在时间戳中添加一个Timedelta,例如6小时30分钟。结果应仅考虑所有有效工作日的具体工作时间,例如8:00(开始工作时间(至16:00(结束工作时间(。当我用下面的代码尝试时,这将在错误的结束时间结束。

pd.Timedelta('06:30:00') + pd.Timestamp('2019-11-08 14:30:00')
Timestamp('2019-11-08 21:00:00')

所需的结果必须是"2019-11-09 11:00:00",而不是"2019-11-8 21:00:00">

有人知道如何指定工作时间的好解决方案吗?这样我就可以在时间戳中添加Timedelta,结果最终在正确的工作时间范围内?

谢谢并致以最良好的问候md5sum

time_ini=pd.Timestamp('2019-11-08 14:30:00')
delta=pd.Timedelta('6:30:00')
def calculate_date(time,delta,ini,fin):
Sum=time+delta
if Sum.hour>fin:
Sum= time + pd.Timedelta(days=1,hours=ini+Sum.hour-fin-time.hour-1,minutes=60-time.minute-1,seconds=60-time.second)
elif Sum.hour <time.hour:
Sum=time+pd.Timedelta(days=1,hours=ini+(24-fin)+Sum.hour-1-time.hour,minutes=60-time.minute-1,seconds=60-time.second)
if Sum.dayofweek >4:
Sum=Sum+pd.Timedelta(days=7-Sum.dayofweek)
return Sum
calculate_date(time_ini,delta,10,20)

Ouput

Timestamp('2019-11-11 11:00:00')

最新更新