使用以下代码,我能够给我的网站上估计3-5个工作日的交付日期。
<?php
$today = date('Y-m-d');
$numDays=3;
$holidays = 'https://www.gov.uk/bank-holidays/england-and-wales.ics';
if (!is_array($holidays)) {
$ch = curl_init($holidays);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$ics = curl_exec($ch);
curl_close($ch);
$ics = explode("\n",$ics);
$ics = preg_grep('/^DTSTART;/',$ics);
$holidays = preg_replace('/^DTSTART;VALUE=DATE:(\\d{4})(\\d{2})(\\d{2}).*/s','$1-$2-$3',$ics);
}
$addDay = 0;
while ($numDays--) {
while (true) {
$addDay++;
$newDate = date('Y-m-d', strtotime("$date +$addDay Days"));
$EarliestArrival = date('D jS', strtotime("$newDate +1 Days"));
$LatestArrival = date('D jS M', strtotime("$newDate +2 Days"));
$newDayOfWeek = date('w', strtotime($newDate));
$newDayOfWeekText = date('D', strtotime($newDate));
$newDateUKFormat = date('jS M', strtotime("$date +$addDay Days"));
if ( $newDayOfWeek>0 && $newDayOfWeek<6 && !in_array($newDate,$holidays)) break;
}
}
?>
<div class="3_5daydispatch">Order today for dispatch: <?php echo $newDayOfWeekText; ?> <?php echo $newDateUKFormat; ?><br>Receive between: <?php echo $EarliestArrival; ?> & <?php echo $LatestArrival; ?></div>我的问题是,由于代码的编写方式,估计的交付日期目前包括周日,这不应该包括周日,因为周日对我们来说不是一个交付日期。
有没有一种方法可以+X天,但不包括周日,以便可以与我当前的代码一起工作?
我没有做过太多的尝试,因为我对从哪里开始做这个没有一点头绪。我搜索了几个类似的主题,但解决方案似乎不适合我的代码流?提前谢谢。
发布于 2021-03-16 15:45:11
$newDate +1 Weekday今天似乎做到了,但明天会再次显示周日最早到达,所以这不是理想的解决方案
发布于 2021-03-16 17:23:56
尝试使用此辅助函数
function isWeekend($date) {
return (date('N', strtotime($date)) >= 6);
}每天检查周末是否倒计时
https://stackoverflow.com/questions/66650797
复制相似问题