PHP - Incrementar fecha

 
Vista:
Imágen de perfil de siREZ
Val: 23
Ha disminuido su posición en 95 puestos en PHP (en relación al último mes)
Gráfica de PHP

Incrementar fecha

Publicado por siREZ (203 intervenciones) el 22/05/2017 23:11:12
Cordial saludo

deseo incrementar una fecha y utilizo el siguiente código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$fecha = $_POST['fec'];
$val = $_POST['val'];
$num = $_POST['num'];
$per = $_POST['per'];
$h=0;
while ($h<=$num) {
		$h++;
		$dt= date($fecha, strtotime('+1 day')) ;
		$ano = substr($dt,0,4);
		$mes = substr($dt,5,2);
		$dia = substr($dt,8,2);
		$fecha = $ano."-".$mes."-".$dia;
 
		echo "<br>$dt ---- $fecha <br>";
 
}

No la Incrementa....
alguien me puede ayudar, no veo el error.

otra manera sería:
1
$dt= date($fecha, strtotime('+1 day')) ;

pero en vez de un día quiero que sea $per (variable)
lo hago así pero no me funciona:
1
$dt= date($fecha, strtotime('+'.$per.' day')) ;



gracias.


siREZ
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Incrementar fecha

Publicado por kip (877 intervenciones) el 23/05/2017 03:46:47
Hola, creo que el problema esta en el valor de la variable $_POST['fec'], la funcion date() recibe dos parametros, el primero es el formato en el que retornara la fecha/hora y el segundo opcional un valor tiempo UNIX, no se que tipo de valor tenga $_POST['fec'] pero debes tener claro que si es un string que representa una fecha algo asi '2017-22-05' no debe ir alli, deberias transformarlo con strtotime() a un valor UNIX y agregarle el num de dias a añadirle, algo asi:

1
$dt= date('Y-m-d', strtotime("{$fecha} +1 day")) ;

De esa forma no seria necesario usar substr() que segun veo lo haces para formatear la fecha, con un echo $dt es suficiente.

Ahora bien para usar el $per hazlo como lo colocaste arriba:

1
$dt= date('Y-m-d', strtotime("{$fecha} +{$per} day")) ;

Aunque creo que resulta mejor usar la clase DateTime que provee PHP para el manejo de fechas, en tu caso seria asi:

1
2
3
4
5
6
7
8
9
10
11
$fechaInicio = $_POST['fec'];
$fecha = new DateTime($fechaInicio);
$val = $_POST['val'];
$num = $_POST['num'];
$per = sprintf('+%d day', $_POST['per']);
$h=0;
while ($h<=$num) {
		$h++;
		$fecha->modify($per);
		echo "<br>{$fechaInicio} ------ {$fecha->format('Y-m-d')}<br>";
}

Claro que como te digo arriba, $_POST['fec'] debe ser un string que representa una fecha en un formato válido.

Prueba y nos cuentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de siREZ
Val: 23
Ha disminuido su posición en 95 puestos en PHP (en relación al último mes)
Gráfica de PHP

asi es... muchas gracias

Publicado por siREZ (203 intervenciones) el 23/05/2017 20:23:37
asi es... muchas gracias

funciona perfecto.

gracias por la nota aclaratoria. ya entiendo.

siREZ
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar