想象一下以下情况:服务提供商与一家公司签订了为期 1 年的合同,每周执行一次服务,每两周执行一次服务,为期 1 年。 该提供商将有一个开始和结束日期。
我提出了一个解决方案,其中 增加 +7 天或 +15 天,并且注册到最终日期 -1,也就是说,它递增注册直到达到合同截止日期。
示例:2023年8月31日至2024年8月30日
有什么问题和疑问?
创建第一个服务时,要求的开始日期为:2023-08-31。 从那时起,增加7天,直到到达最终日期,即2024-08-30。
用你的头脑和逻辑来计算 1 年有多少周:12 个月 * 4 周 = 48 周。
使用 Google:52.1786 周。
生成的结果是: 53 周。
为什么?有些月份有 5 周,因为月份的最后几天从 31、30、29、28 不等。
1 个月内记录的 5 周证据。
一个月有5周正常吗?
每个月不是正好有4周吗?
为什么谷歌给出一个结果,我的计算给出另一个结果,增量另一个?
代码示例(不是我的工作代码)
function registerService($incrementTime, $startDate, $finalDate) {
$i = 0;
while ($startDate <= $finalDate) {
var_dump($startDate->format('d-m-Y'));
$startDate = $startDate->modify($incrementTime);
$i++;
}
var_dump($i);
}
$startDate = new DateTime('2023-08-31');
$finalDate = clone $startDate;
$finalDate = $finalDate->add(new DateInterval("P1Y"));
$finalDate->sub(new DateInterval('P1D'));
registerService('+7 days', $startDate, $finalDate);
如果您注意到 08/2024 和 05/2024 已经有 5 周了,这是正确的吗?
如果我将此合同延长至 10 年,周数可能会有很大差异......
工作人员在评论中解决了我的疑问。谢谢!