/** * Converts the date to the specified no of months from the given date * * To subtract months use a negative value for the '$pn_months' * parameter * * @param int $pn_months months to add * * @return void * @access public * @since Method available since Release 1.5.0 */ function addMonths($pn_months) { list($hs_year, $hs_month, $hs_day) = explode(" ", Date_Calc::addMonths($pn_months, $this->day, $this->month, $this->year, "%Y %m %d")); $this->setLocalTime($hs_day, $hs_month, $hs_year, $this->hour, $this->minute, $this->second, $this->partsecond); }
/** * Returns date of the first day of the month in the number of months * from the given date * * @param int $months the number of months from the date provided. * Positive numbers go into the future. * Negative numbers go into the past. * 0 is the month presented in $month. * @param string $month the month, default is current local month * @param string $year the year in four digit format, default is the * current local year * @param string $format the string indicating how to format the output * * @return string the date in the desired format * @access public * @static * @since Method available since Release 1.4.4 */ function beginOfMonthBySpan($months = 0, $month = 0, $year = null, $format = DATE_CALC_FORMAT) { if (is_null($year)) { $year = Date_Calc::dateNow('%Y'); } if (empty($month)) { $month = Date_Calc::dateNow('%m'); } return Date_Calc::addMonths($months, Date_Calc::getFirstDayOfMonth($month, $year), $month, $year, $format); }
/** * Returns an array of dates for a monthly schedule (like subscription) * @param $startDate date('Y-m-d') * @param int number of months * @param bool (optional, default true) include start date in the schedule */ public static function monthlySchedule($startDate, $num, $inclstart = true) { $startTime = strtotime($startDate); $startDay = date('d', $startTime); $startMonth = date('m', $startTime); $startYear = date('Y', $startTime); $startoffset = $inclstart ? 0 : 1; for ($i = $startoffset; $i < $num; $i++) { $dt[] = Date_Calc::addMonths($i, $startDay, $startMonth, $startYear, '%Y-%m-%d'); // Correcting not valid dates (e.g. february 30, june 31) /* $tempdt = date('d',strtotime($dt[$i])); $numd = date('t',strtotime($dt[$i])); if($tempdt>$numd) { $dt[$i] = date('Y',strtotime($dt[$i])).'-'.date('m',strtotime($dt[$i])).'-'.$numd; }*/ } return $dt; }