如何解决在php中查找两个日期之间的假期
嗨,我有 3 个日期 DropoffDate,atd and utd
。
逻辑是
atd = DropOffDate + 3 Days
和 utd = DropOffDate + 9 Days
如果 DropOffDate = 24-12-2019
那么 atd = 27-12-2019 and utd = 02-01-2020
我有一系列假期
Array
(
[0] => 25-12-2019
[1] => 01-01-2020
[2] => 18-04-2019
[3] => 26-12-2019
[4] => 01-08-2021
[5] => 30-11-2021
[6] => 04-01-2021
)
现在的要求是找出 DropOffDate 和 atd 之间的所有假期,并将这些天数添加到 atd 和相同的 utd。如果最终的 atd 或 utd 再次放假,则再增加一天。
到目前为止,我已经编写了这个脚本,但它只获取第一个假期,而不会查找下一个假期
$holidayList = Array
(
[0] => 25-12-2019
[1] => 01-01-2020
[2] => 18-04-2019
[3] => 26-12-2019
[4] => 01-08-2021
[5] => 30-11-2021
[6] => 04-01-2021
)
$dropDate = '24-12-2019';
$atd = date("d-m-Y",strtotime("+3 days",$dod));
$utd = date("d-m-Y",strtotime("+9 days",$dod));
$dropDate = strtotime($dropDate);
$atd = strtotime($atd);
$utd = strtotime($utd);
foreach($holidayList as $holiday){
$holiDate = date('d-m-Y',strtotime($holiday));
$holiDate = strtotime($holiDate);
if (($holiDate >= $dropDate) && ($holiDate <= $atd)){
$atd = date('d-m-Y',$atd);
$atd = date("d-m-Y",strtotime("+1 days",$atd));
}
if(($holiDate >= $dropDate) && ($holiDate <= $utd)){
$utd = date('d-m-Y',$utd);
$utd = date("d-m-Y",$utd));
}
}
echo "<b>AT Date".$atd."<br>";
echo "<b>UT Date".$utd;
ATD 和 UTD 应该是 29-12-2019 和 5-1-2020。请帮忙!
解决方法
您的代码有不必要的从时间戳到字符串的日期转换。如果您清除所有内容,您将获得预期日期。
$dropDate = strtotime('24-12-2019');
$atd = strtotime("+3 days",$dropDate);
$utd = strtotime("+9 days",$dropDate);
foreach($holidayList as $holiday){
$holiDate = strtotime($holiday);
if (($holiDate >= $dropDate) && ($holiDate <= $atd)){
$atd = strtotime("+1 days",$atd);
}
if(($holiDate >= $dropDate) && ($holiDate <= $utd)){
$utd = strtotime("+1 days",$utd);
}
}
echo "AT Date ",date('d-m-Y',$atd),"\n";
echo "UT Date ",$utd);
// Output:
// AT Date 29-12-2019
// UT Date 05-01-2020
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。