我正在创建一个调度程序脚本,如果我今天执行任务,我的下一个任务将是从今天开始的6个月(半年度),但我的问题是人们星期日没有活动所以必须在星期一进行调整。
如何添加6个月到今天的日期,但不包括星期日,我使用PHP并且到目前为止能够使用以下代码添加6个月。
我的代码就是这个。
<?php echo date('Y-m-d', strtotime('+6 months'));?>
答案 0 :(得分:0)
以下是答案:https://stackoverflow.com/a/12365635/6557808 提供的不仅仅是你要求的,而且很清楚。
答案 1 :(得分:0)
这是一个小功能。只是传递和结束日期
<?php
function number_of_working_days($from, $to) {
$workingDays = [1, 2, 3, 4, 5, 6]; # date format = N (1 = Monday, ...)
$from = new DateTime($from);
$to = new DateTime($to);
$to->modify('+1 day');
$interval = new DateInterval('P1D');
$periods = new DatePeriod($from, $interval, $to);
$days = 0;
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$days++;
}
return $days;
}
echo number_of_working_days('2017-05-06', '2017-05-08');
?>
答案 2 :(得分:0)
完整答案在这里: -
function daysToAdd($startDate,$endDate)
{
$count=0;
While($startDate!=$endDate){
$lpcnt=0;
$begin = new DateTime($startDate);
$end = new DateTime($endDate);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ( $period as $dt ){
if($dt->format( "l" )=='Sunday'){
$count++;
$lpcnt++;
}
}
$day = date('D', strtotime($endDate));
if($day=='Sun'){
$count=$count+1;
$lpcnt=$lpcnt+1;
}
$startDate=date('Y-m-d', strtotime($endDate . ' +1 day'));
$endDate=date('Y-m-d', strtotime($endDate . ' +'.$lpcnt.' day'));
if($startDate!=$endDate){
daysToAdd($startDate,$endDate);
}else{
if(date('D', strtotime($startDate))=='Sun') {
$count=$count+1;
break;
}
}
}
return $count;
}
$currentDate=date('Y-m-d');
$postSixMonth=date('Y-m-d', strtotime("+5 months"));
$daysToadd=daysToAdd($currentDate,$postSixMonth);
$requiredDate=date('Y-m-d', strtotime($postSixMonth . ' +'.$daysToadd.' days'));
echo $requiredDate;exit;