获得全年每个月的特定日期

时间:2015-08-24 06:03:49

标签: php date time

我正在做一个"截止"日期,我需要每个月设置一次。比如说,我将今年的截止日期设定为8月25日,然后应该是9月25日,10月25日等等,直到年底结束。

这是我的代码:

$now = "2015-08-25"; 
$nextDate = getCutoffDate($now);
echo $nextDate; 

function getCutoffDate($start_date) 
{    
  $date_array = explode("-",$start_date); // split the array
  // var_dump($date_array);
  $year = $date_array[0];
  $month = $date_array[1];
  $day = $date_array[2];

  /*if (date('n', $now)==12)
  {
    return date("Y-m-d",strtotime(date("Y-m-d", $start_date) . "+1 month"));
  }*/

  if (date("d") <= $day) {
    $billMonth =  date_format(date_create(), 'm');
  }
  else{
    $billMonth = date_format(date_modify(date_create(), 'first day of next month'), 'm');
  }
  // echo date("d").' '. $billMonth.'<br>';
  $billMonthDays = cal_days_in_month(CAL_GREGORIAN, ($billMonth), date("Y"));
  // echo $billMonthDays.'<br>';
  if ($billMonthDays > $day) {
    $billDay = $day;
  } else {
    $billDay = $billMonthDays;
  }
}

我从这里得到了这个:http://www.midwesternmac.com/blogs/jeff-geerling/php-calculating-monthly

它仅返回下个月的相同日期,但如何获取当年每个月的具体日期?请留下你的想法。还是个新手,对不起。

1 个答案:

答案 0 :(得分:0)

在这种情况下,这应该足够了:

<?php

for($i=8; $i<=12; $i++) {
    echo sprintf('25-%02d-2015', $i) . '<br>';
}

但是如果你需要更灵活的方式:

<?php

$date = new DateTime('25-08-2015');

function getCutoffDate($date) {
    $days = cal_days_in_month(CAL_GREGORIAN, $date->format('n'), $date->format('Y'));
    $date->add(new DateInterval('P' . $days .'D'));
    return $date;
}

for($i = 0; $i < 5; $i++) {
    $date = getCutoffDate($date);
    echo $date->format('d-m-Y') . '<br>';
}

这应该打印:

25-09-2015
25-10-2015
25-11-2015
25-12-2015
25-01-2016