function lastValidDay($hoje, $numMeses, $diaVenc) { //retorna o ultimo dia valido do mes a //exatos $numMeses de $hoje (timestamp), em torno de $diaVenc //para o caso de datas de vencimento a partir do dia 29 if ($diaVenc <= 28) { $datafinal = strtotime("+$numMeses month"); } else { $datafinal = strtotime("+$numMeses month"); for ($j = 0; ; $j++) { $_tmpDia = substr($datafinal, 6, 2); if ($_tmpDia < 28) { $datafinal = strtotime("-$j day", $datafinal); continue; } else break; } } return date('YmdHis', $datafinal); }