我正在尝试确定 PHP 中的时间间隔的持续时间,考虑到周一至周五的工作时间(上午 9 点到下午 5 点),不包括特定的公共假期。让我们考虑公共假期为2023年8月15日、2023年11月1日、2023年11月11日和2023年12月25日。
例如,假设我有一个从 10 月 28 日 07:00:00 到 11 月 3 日 10:00:00 的间隔。如何计算仅在工作时间内(不包括周末和上述假期)的持续时间(以秒为单位)?
我正在寻找有关实现此持续时间计算的有效方法的指导。
Y-m-d
格式或类似格式将假期列表保存在数组中。伪代码:
holidays = ['2023-08-15', '2023-11-01', '2023-11-11', '2023-12-25']
startDay = '2023-10-28 07:00:00'
endDay = '2023-11-03 10:00:00'
ans = 0
for day in range(start, end):
if day in holidays OR date->weekDay() in [6, 0]:
continue
startTime = '09:00:00 AM'
endTime = '17:00:00 PM'
if day == startDay:
startTime = max('09:00:00 AM', day->startTime)
if day == endDay:
endTime = min('17:00:00 PM', day->endTime)
if endTime > startTime and startTime >= '09:00 AM' and endTime <= '17:00:00 PM':
ans += endTime - startTime
print ans + ' working hours'