PHP使用今天的日期来获取后续月份的特定日期

时间:2011-02-02 13:03:35

标签: php date

为旅游公司预订系统。它为计划者提供了一些开始日期的选项,所有选项都应该是每个月的第一个星期六。所以PHP需要今天的日期。

然后,选项框1中的以下PHP应该使用今天的日期来显示下个月的第一个星期六。第二个框显示了之后的一个月。等..等等。

任何有关如何做到这一点的帮助都将是非常了不起的。

由于

2 个答案:

答案 0 :(得分:0)

这个例子非常详细,但它应该显示PHP 5.3的DateTime类及其关系的强大功能。

<?php

$first_of_next_month = new DateTime('next month first day'); // get a start date

$a_day = new DateInterval('P1D');
$a_month = new DateInterval('P1M');

$start_dates = array();

foreach (new DatePeriod($first_of_next_month, $a_month, 11) as $day_of_month) {
    // $day_of_month is now the first day of the next month

    while ($day_of_month->format('w') != 6) {
    // while $day_of_month isn't a Saturday
        $day_of_month->add($a_day);
        // add a day
    }

    $start_dates[] =  $day_of_month;
}

foreach ($start_dates as $d) {
    echo $d->format('r'), "\n"; // or format how you like
}

答案 1 :(得分:0)

function next_ten_first_sat(){
    $next_month = strtotime(date('Y-m-d'));
    $j=0;
    for($i=1;$i<10;$i++){
        if($i==1){
            $sat_next_month[$i] = strtotime('next month first saturday', $next_month);
            $next_month = strtotime(date('Y-m',$sat_next_month[$i]).'-01');
        }else{
            $sat_next_month[$i] = strtotime('next month first saturday', $next_month);
            $next_month = strtotime(date('Y-m',$sat_next_month[$i]).'-01');
            $result_year = date('Y', $sat_next_month[$i]);
            if(date('m', $sat_next_month[$i])>10){
                $result_month = date('m', $sat_next_month[$i])-1;
            }else{
                $result_month = date('m', $sat_next_month[$i])-1;
                $result_month = '0'.$result_month;
            }
            $result_date = date('d', $sat_next_month[$i]);
            $result_array[$j] = $result_year.'-'.$result_month.'-'.$result_date;
        }      
       $j++;
    }
    return $result_array;
}

对不起家伙第一次误解了这个问题。这应该按照预期的方式工作,但它非常混乱...请​​优化它们......