我想编写一个函数,根据给定的日期,获得合同终止的日期($end_date)。
,条件为:
在合同创建后的前3个月,我们有一个宽限期。因此,如果我们在前3个月结束前14天收到合同辞职,合同期限将不适用,合同终止有效期至合同成立后的前3个月的最后一天。
如果宽限期已经过去,合同期限将适用,所以辞职只有在合同期限结束前6个月我们收到才有效。如果我们在合同期满6个月后收到辞呈,我们将续签相同期限的合同。
我有这个信息:
$resignation_date = date('Y-m-d', strtotime($letter_of_resignation_received_date));
$contract_begin_date = date('Y-m-d', strtotime($contract_begin_date));
$contract_duration= 48; //This means 48 Months
1。条件:
- 如果$resignation_date在$contract_begin_date 后3个月结束前14天
- 结果:$end_date将是$contract_begin_date + 3个月($contract_duration将不适用)
$grace_periode_date= date('Y-m-d', strtotime($contract_begin_date . ' + 3 months - 14 days'));
if ($resignation_date < $grace_periode_date ) {
$end_date = date('Y-m-d', strtotime($contract_begin_date . ' + 3 months'));
}
- 条件:
- 如果$resignation_date已经超过$contract_begin_date后的前3个月结束前14天,则适用$contract_duration
- 结果:$end_date将是$contract_begin_date + $contract_duration Months
- 条件:
- 如果宽限期已过,而我们在合同期限届满前6个月才收到辞职信,则合同已经续签。
- 结果:$end_date将是$contract_begin_date + ($contract_duration*2) Months
if ($resignation_date > $grace_periode_date ) {
$end_date = date('Y-m-d', strtotime($contract_begin_date . ' + '.$contract_duration.' months'));
}
if ($resignation_date > $grace_periode_date && $resignation_date > date('Y-m-d', strtotime($contract_begin_date . ' + '.$contract_duration.' months - 6 months'))) {
$end_date = date('Y-m-d', strtotime($contract_begin_date . ' + '.$contract_duration.' months + '.$contract_duration.' months '));
}
这一切都很好。问题是,如果合同已经自动续签了2次,那么我这样做的方式就不正确。我所有的时间都基于$contract_begin_date +新的持续时间。
如果合同已经续签了2次。一个日期。条件会导致错误的日期。因为我没有最后一次续约的日期,我只有合同开始日期和合同期限。
如何仅使用我所拥有的信息获得正确的end_date ?
<代码>代码>
你需要计算合同的开始时间期限你收到了辞职合同。
PP_6这里的CC_2是你收到辞呈的日期。
这个想法很简单:只要沿着合同期限往前走,直到期限结束时超出你感兴趣的日期。
在此之后,你可以在第三个条件中使用期间的开始,而不是合同的开始。
注意:代码未经测试,可能包含错误。