为了账号安全,请及时绑定邮箱和手机立即绑定

获取完成日期,给定开始日期和一周的时间表

获取完成日期,给定开始日期和一周的时间表

PHP
摇曳的蔷薇 2021-12-03 19:32:07
当然,我在使用 PHP 获取完成日期时遇到问题,如下所示:输入:开始日期(例如:8/23/2019)附表周(例如:Monday, Tuesday, Friday)教训合计(如:8)输出:当然是完成日期(9/9/2019例如上面的输入)。一节课是一天。来自最终用户的输入字段:
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

正如我所见,它在有课时循环,并在星期一、星期二或星期五减去。

在循环输出日期之后。


$start = "8/23/2019";

$days = ["Monday", "Tuesday", "Friday"];

$n = 8;


$d = strtotime($start);

while($n>0){

    //See if day is in days array

    if(in_array(date("l", $d), $days)){

        $n--;

    }

    $d += 86400; // go to next day

}


echo date("m/d/Y", $d-86400); //-86400 because  the loop adds one at the end.


查看完整回答
反对 回复 2021-12-03
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

试试这个代码,如果我理解正确的话))


<?

$startDay = '2019-09-25';

$aSchedule = array(1,2,4);

$iCntShed = count($aSchedule);

$iLessonsCnt = 8;

$iDWStartDay = date('w',strtotime($startDay));

$aDOWMap = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');


// first day according Schedule array and startDay

$aWeekDays = array_filter($aSchedule,function($iSDW) use ($iDWStartDay){

    return $iSDW>= $iDWStartDay;

});


// day according of week

$nextDate = date('Y-m-d',strtotime($startDay.' next '.$aDOWMap[end($aWeekDays)]));

$i = 0;


while (count($aWeekDays)<$iLessonsCnt) {

    $i = $i<$iCntShed ? $i : 0;

    $aWeekDays[] = $aSchedule[$i];

    $nextDate = date('Y-m-d',strtotime($nextDate.' next '.$aDOWMap[$aSchedule[$i++]]));

}


print_r($aWeekDays);


echo $nextDate;


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信