Cita:
Iniciado por Chikis si por ejemplo un paciente se tiene que hacer una visita cada 15 dias tomando como por ejemplo los dias 15 y fin de mes? pero tomando en cuenta que los meses terminan o en 30 y 31 o 28 por febrero?
Pues lo único que tienes que hacer es sumar los quince días a la función mktime. Para saber más sobre esta función checa este enlace:
http://www.php.net/manual/es/function.mktime.php
Pondrías tu código de esta manera:
Código PHP:
<?php
$fecha_inicial = "14/02/2006"; // fecha en la que el paciente se presenta
$suma_dias = 15; // dias para la proxima cita
$partesfi = explode ( "/", $fecha_inicial ); // separamos el día, mes y año de la fecha inicial
// sumamos los días indicados en la variable $suma_dias a la $fecha_inicial
$proxima_cita = mktime ( 0, 0, 0, date ("$partesfi[1]"), date ("$partesfi[0]") + $suma_dias, date ("$partesfi[2]") );
echo "El paciente se presento el: ".$fecha_inicial."<br/>";
echo "Su proxima cita será: ".date ( "d/m/Y", $proxima_cita );
?>
y si quieres que se cuenten sólo los días habiles ( Lunes a Viernes ), harías lo siguiente:
Código PHP:
<?php
$fecha_inicial = "06/12/2006"; // fecha en la que el paciente se presenta
$suma_dias = 15; // dias para la proxima cita
$partesfi = explode ( "/", $fecha_inicial ); // separamos el día, mes y año de la fecha inicial
function checa( $operacion ) // esta función se encargará de sumar los dias indicados en $suma_dias
{
$fines_de_semana = 0; // esta variable servirá para saber cuantos sabados y domingos hay entre $fecha_inicial y los siguientes $suma_dias
for ( $e = 1; $e <= $operacion; $e++ )
{
$dia = mktime ( 0, 0, 0, date ("$partesfi[1]"), date ("$partesfi[0]") + $e, date ("$partesfi[2]") );
if ( date( "w", $dia ) == 0 || date( "w", $dia ) == 6 ) // si $dia es igual a domingo (0) o sabado (6)
$fines_de_semana += 1; // agregamos una unidad a la variable $fines_de_semana para indicar que se encontro un sabado o domingo
}
return $fines_de_semana;
}
// checamos cuantos sabados y domingos hay en los días indicados
$suma1 = checa ( $suma_dias );
$suma2 = checa ( $suma_dias + $suma1 );
$suma2 >= $suma1 ? $proxima_cita = $suma_dias + $suma2 : $proxima_cita = $suma_dias + $suma1;
echo "El paciente se presento el: ".$fecha_inicial."<br/>";
echo "Su proxima cita será: ".date( "d/m/Y", mktime ( 0, 0, 0, date ("$partesfi[1]"), date ("$partesfi[0]") + $proxima_cita, date ("$partesfi[2]") ) );
?>
Espero sea lo que necesitabas o por lo menos te de una idea para hacer funcionar lo que necesitas. Suerte