使用php中的特定日期自动获取结束日期

时间:2013-12-24 17:35:46

标签: php using days

当给出开始日期时,它应该只通过星期日或星期一,星期二,星期五或星期一来获取结束日期,星期五,星期四,我们坐在使用php。请任何人帮助我.....


Here is my html code:




 <label>Start Date:</label><input type="text" id="txtStartDate" name="sd"></input>
 <td>days</td>
<td>
<select name="days">
    <option value="" >only sunday</option> 
    <option value="batch">sat and sun</option>
    <option value="">M-F</option>
    <option value="">M-W-F</option>
    <option value="">TU-THUR-SAT</option>
 </td>
 <td>
    <input type="submit" value="Submit" name="sub"  />
 </td>

<?php
//$startdate=$_POST['sd'];
$startdate='2013-12-25';
$date=date_create($startdate);
date_add($date,date_interval_create_from_date_string("10 days"));
echo date_format($date,"Y-m-d");
?>

它只使用天数提取,但我希望使用特定日期。

2 个答案:

答案 0 :(得分:0)

考虑使用strtotime

    <option value="SUNDAY" >only sunday</option> 
    <option value="SATSUN">sat and sun</option>
    <option value="MF">M-F</option>
    <option value="MWF">M-W-F</option>
    <option value="TUTHURSAT">TU-THUR-SAT</option>


    <?php

    $option = //get selected option;
    $startDate = //get selected date;
    $days = array();
    switch($option){
        case 'SUNDAY' : $days[] = 'next sunday'; break;
        case 'SATSUN' : $days[] = 'next saturday'; $days[] = 'next sunday'; break;
        //etc
    }

    $count = 0;
    $endDate = $startDate;
    while ($count < 10){
        $index = $count++ % count($days);
        $endDate = date('Y-m-d' , strtotime($days[$index] , strtotime($endDate)));
    }

    echo $endDate;

Demo

答案 1 :(得分:0)

存储您要在选项值中使用的日期,即

<select name="days">
    <option value="sunday" >only sunday</option> 
    <option value="saturday-sunday">sat and sun</option>
    <option value="monday-tuesday-wednesday-thursday-friday">Monday to Friday</option>
    <option value="monday-wednesday">Only Monday or Wednesday</option>
</select>

if (isset($_POST['sd']) && isset($_POST['days'])) {

    $startDate = new DateTime($_POST['sd']);
    $days = explode('-', $_POST['days']);
    $count = count($days);
    $dates = array();

    $currentDate = $startDate->format('Y-m-d');
    $j = 0;

    for ($i=0;$i<10;$i++) {

        $day = $days[$j];
        $a = new DateTime($currentDate);
        $a->modify("next $day");
        $dates[] = $currentDate = $a->format('Y-m-d');

        $j = (($j+1) == $count) ? 0 : $j++; 

    } 

    foreach ($dates as $date) {
        echo $date.'<br />';
    }
}

希望这有帮助! :)

修改

或者如果你只想要最后一个数组:

而不是foreach使用

echo end($dates);