Podria empezar asi
Código PHP:
<?php
date_default_timezone_set('America/Bogota');
// Cuantos dias tiene... Febrero ?
function dias_mes($month, $year) {
return date("d",mktime(0,0,0,$month+1,0,$year));
}
// fecha en formato "dd-mm-aaaa"
$hoy = date('d-m-Y');
$en_28 = date('d-m-Y', strtotime($hoy. ' + 28 days'));
echo $en_28;
// Rellenar hasta ese dia
$dia_actual = date('d');
$ano_actual = date('Y');
$mes_actual = date('m');
list ($dia_en_28,$mes_en_28,$ano_en_28) = explode('-',$en_28);
if ($mes_actual==$mes_en_28)
{
// mismo mes
for ($d=$dia_actual;$d<=$dia_en_28;$d++){
$dias[] = (int) $d;
}
}else{
// mes siguiente
$ultimo_dia_mes = dias_mes($mes_actual,$ano_actual);
for ($d=$dia_actual;$d<=$ultimo_dia_mes;$d++){
$dias[] = (int) $d;
}
for ($d=1;$d<=$dia_en_28;$d++){
$dias[] = (int) $d;
}
}
var_dump($dias);
Salida:
Cita: 26-07-2013
array (size=29)
0 => int 28
1 => int 29
2 => int 30
3 => int 1
4 => int 2
5 => int 3
6 => int 4
7 => int 5
8 => int 6
9 => int 7
10 => int 8
11 => int 9
12 => int 10
13 => int 11
14 => int 12
15 => int 13
16 => int 14
17 => int 15
18 => int 16
19 => int 17
20 => int 18
21 => int 19
22 => int 20
23 => int 21
24 => int 22
25 => int 23
26 => int 24
27 => int 25
28 => int 26
Obviamente esta muy chancho asi... toca encapsular eso en una clase o funcion al menos...... no use nada exclusivo de PHP 5.3 por compatiblidad
Version encapsulada:
Código PHP:
<?php
date_default_timezone_set('America/Bogota');
var_dump(dias_plus28(4,10,2013));
/**
* @param int dia
* @param int mes
* @param int ano
* @return array
*/
function dias_plus28($dia_inicio=null,$mes_inicio=null,$ano_inicio=null){
if ($dia_inicio==null and $mes_inicio==null and $ano_inicio==null){
$dia_inicio = date('d');
$mes_inicio = date('m');
$ano_inicio = date('Y');
$inicio= "$dia_inicio-mes_inicio-ano_inicio";
}else
$inicio = date('d-m-Y',mktime(0,0,0,$mes_inicio,$dia_inicio,$ano_inicio)); // hoy
$en_28 = date('d-m-Y', strtotime($inicio. ' + 28 days'));
list ($dia_en_28,$mes_en_28,$ano_en_28) = explode('-',$en_28);
if ($mes_inicio==$mes_en_28)
{
// mismo mes
for ($d=$dia_inicio;$d<=$dia_en_28;$d++){
$dias[] = (int) $d;
}
}else{
// mes siguiente
$ultimo_dia_mes = dias_mes($mes_inicio,$ano_inicio);
for ($d=$dia_inicio;$d<=$ultimo_dia_mes;$d++){
$dias[] = (int) $d;
}
for ($d=1;$d<=$dia_en_28;$d++){
$dias[] = (int) $d;
}
}
return $dias;
}
// Cuantos dias tiene... Febrero ? (anonima)
function dias_mes($month, $year)
{
return date("d",mktime(0,0,0,$month+1,0,$year));
}