Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/08/2013, 09:55
Avatar de informacionsys
informacionsys
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Problema strtotime con fecha "31 de Julio 2013"

hola

lo solucione de la siguiente manera ... es lo unico que se me ocurrio

Código PHP:
Ver original
  1. function getMonthDays($Month, $Year)
  2.     {
  3.        //Si la extensión que mencioné está instalada, usamos esa.
  4.        if( is_callable("cal_days_in_month"))
  5.        {
  6.           return cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
  7.        }
  8.        else
  9.        {
  10.           //Lo hacemos a mi manera.
  11.           return date("d",mktime(0,0,0,$Month+1,0,$Year));
  12.        }
  13.     }
  14.  
  15.  
  16.     function getFechaAnteriorExacta($fecha)
  17.     {
  18.         $fechaSalida            =   date("Y-m-d",strtotime($fecha));
  19.  
  20.         $datosFechafin2 =   explode("-",$fechaSalida);
  21.  
  22.         //segun el día que me retorne valido que sea 31
  23.  
  24.         if($datosFechafin2[2] == "31")
  25.         {
  26.             $nuevaFechaF    =   strtotime("-1 month",mktime(0,0,0,$datosFechafin2[1],1,$datosFechafin2[0]));
  27.             $mes            =    date("m",$nuevaFechaF);
  28.             $year           =    date("Y",$nuevaFechaF);
  29.             $diasDelMes     =   $this->getMonthDays($mes, $year);
  30.             //echo $diasDelMes;
  31.             $nuevafechaFin  =   date($diasDelMes.'-m-Y',$nuevaFechaF); 
  32.         }
  33.         else
  34.         {
  35.             $nuevaFechaF    =   strtotime("-1 month",strtotime($fechaSalida)); 
  36.             $nuevafechaFin  =   date('d-m-Y',$nuevaFechaF);
  37.         }
  38.  
  39.         return $nuevafechaFin;
  40.     }
  41.  
  42.  
  43. ///ejemplo de uso
  44.  
  45. $fechaActual      = "2013-07-31";
  46. $fechaAnterior   = getFechaAnteriorExacta($fechaActual);
  47.  
  48. //resultado 30-06-2013

simplemente valido que si el dia de la fecha a operar es 31 restele normal el mes anterior y capture la cantidad de días de ese mes anterior.


Gracias igualmente por sus comentarios .

Última edición por informacionsys; 22/08/2013 a las 06:52