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

2024-04-25 22:57:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在时间戳中添加一个时间增量,例如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-08 21:00:00”

有没有人知道一个好的解决方案如何指定营业时间,这样我就可以在时间戳中添加一个Timedelta,结果就在正确的营业时间范围内了?你知道吗

谢谢并致以最诚挚的问候 MD5总和


Tags: 代码错误时间解决方案增量md5timestamptimedelta
1条回答
网友
1楼 · 发布于 2024-04-25 22:57:55
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)

输出

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

相关问题 更多 >