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

当然,我在使用 PHP 获取完成日期时遇到问题,如下所示:

输入:

  • 开始日期(例如:8/23/2019

  • 附表周(例如:Monday, Tuesday, Friday

  • 教训合计(如:8

输出:当然是完成日期(9/9/2019例如上面的输入)。

一节课是一天。来自最终用户的输入字段:

http://img2.mukewang.com/61aa00480001cbef07650184.jpg


摇曳的蔷薇
浏览 175回答 2
2回答

RISEBY

正如我所见,它在有课时循环,并在星期一、星期二或星期五减去。在循环输出日期之后。$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.

料青山看我应如是

试试这个代码,如果我理解正确的话))<?$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){&nbsp; &nbsp; return $iSDW>= $iDWStartDay;});// day according of week$nextDate = date('Y-m-d',strtotime($startDay.' next '.$aDOWMap[end($aWeekDays)]));$i = 0;while (count($aWeekDays)<$iLessonsCnt) {&nbsp; &nbsp; $i = $i<$iCntShed ? $i : 0;&nbsp; &nbsp; $aWeekDays[] = $aSchedule[$i];&nbsp; &nbsp; $nextDate = date('Y-m-d',strtotime($nextDate.' next '.$aDOWMap[$aSchedule[$i++]]));}print_r($aWeekDays);echo $nextDate;
打开App,查看更多内容
随时随地看视频慕课网APP