Foros del Web » Programando para Internet » PHP »

Problema con calculo de fecha

Estas en el tema de Problema con calculo de fecha en el foro de PHP en Foros del Web. Hice este script que pretende calcular la posible fecha del parto de la mujer teniendo en cuenta si el año es bisiesto o no @import ...
  #1 (permalink)  
Antiguo 21/04/2010, 11:15
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Problema con calculo de fecha

Hice este script que pretende calcular la posible fecha del parto de la mujer teniendo en cuenta si el año es bisiesto o no

Código PHP:
Ver original
  1. <?
  2. //Pedimos la ultima fecha del periodo
  3. $diahoy = $_POST['dia'];
  4. $meshoy = $_POST['mes'];
  5. $anohoy = $_POST['ano'];
  6.  
  7. $fechahoy = mktime(0,0,0,$meshoy,$diahoy,$anohoy);
  8.  
  9.  
  10. function getMonthDays($Month, $Year)
  11. {
  12.  //Si la extensión que mencioné está instalada, usamos esa.
  13.    if( is_callable("cal_days_in_month"))
  14.    {
  15.       return cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
  16.    }
  17.    else
  18.    {
  19.       //Lo hacemos a mi manera.
  20.       return date("d",mktime(0,0,0,$Month+1,0,$Year));
  21.    }
  22. }
  23. //Obtenemos la cantidad de días que tiene febrero actual
  24. $febreroactual = getMonthDays(2, $anohoy);
  25.  
  26. $parto = $fechahoy+((((60*60)*24)*7)*40);
  27.  
  28. $anoparto = date("Y", $parto);
  29.  
  30.  
  31. if ($anoparto > $anohoy ) {
  32.  
  33.  
  34.  
  35.  
  36.     if ($febreroproximo > $febreroactual ) {
  37.     $parto = $fechahoy+((((60*60)*24)*7)*40)+86400;
  38.  
  39.     $diaparto = date("d", $parto);
  40.     $mesparto = date("M", $parto);
  41.     $anoparto = date("Y", $parto);
  42.  
  43.     echo "<p>La posible fecha de tu parto es el <b>",date("d-M-Y", $parto)."</b>, debes tener en cuenta que esta fecha es relativa al cuidado de tu embarazo.";
  44.                         }
  45.     else
  46.     {
  47.  
  48.     $parto = $fechahoy+((((60*60)*24)*7)*40);
  49.  
  50.     $diaparto = date("d", $parto);
  51.     $mesparto = date("M", $parto);
  52.     $anoparto = date("Y", $parto);
  53.  
  54.     echo "<p>La posible fecha de tu parto es el <b>",date("d-M-Y", $parto)."</b>, debes tener en cuenta que esta fecha es relativa al cuidado de tu embarazo.";
  55.     }              
  56.             }
  57. else                {
  58. $parto = $fechahoy+((((60*60)*24)*7)*40);
  59.  
  60. $diaparto = date("d", $parto);
  61. $mesparto = date("M", $parto);
  62. $anoparto = date("Y", $parto);
  63.  
  64. echo "<p>La posible fecha de tu parto es el <b>",date("d-M-Y", $parto)."</b>, debes tener en cuenta que esta fecha es relativa al cuidado de tu embarazo.";
  65. }
  66.  
  67. ?>

Cuando lo corro en mi localhost funciona bien, pero lo corro en el server http://www.test123-colombia.com/calc...culadoras.html

y me da este error

Cita:
Warning: cal_days_in_month() [function.cal-days-in-month]: invalid date. in /home/afedal/public_html/calculadora/parto.php on line 143
y no siendo poco esto no hace la operacion sino que siempre me arroja que el parto es el 05-Sep-2000 que tengo mal, porque en la red no funciona y en mi local si?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 21/04/2010, 11:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con calculo de fecha

Pero porque no usas mejor strtotime y date juntos
Código PHP:
Ver original
  1. <?php
  2. $fecha = '2010-04-21';
  3. echo date('Y-m-d',strtotime('+40 week ' . $fecha));
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: calculo, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:07.