Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2013, 10:45
Avatar de mdromed
mdromed
 
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Funcion restar fechas y desglosarlas en a m s d h m s

Pues eso, os paso esta funcion que he hecho para restar fechas y desglosarlas en años meses semanas dias horas minutos segundos.
Puede devolver cualquiera de esos valores por separado o todos juntos...


Código PHP:
Ver original
  1. function fun_diferenciaEntreFechas($arg_fechaMenor, $arg_fechaMayor, $arg_obtener = "TODOABREVIA", $arg_redondear = true){
  2.         //Devuelve la diferencia entre 2 fechas según los parámetros ingresados. Es $arg_fechaMayor - $arg_fechaMenor
  3.         //El formato de fecha recibido es: "20-09-2013 17:49:30" o un timestamp
  4.         $var_segs = ""; //Por defecto
  5.         $var_mins = ""; //Por defecto
  6.         $var_horas = ""; //Por defecto
  7.         $var_dias = ""; //Por defecto
  8.         $var_semanas = ""; //Por defecto
  9.         $var_meses = ""; //Por defecto
  10.         $var_anyos = ""; //Por defecto
  11.         $var_fechaMenor = 0; //Por defecto
  12.         $var_fechaMayor = 0; //Por defecto
  13.         if(!is_numeric(
  14.             $arg_fechaMayor)){$var_fechaMayor = strtotime($arg_fechaMayor);
  15.         }else{$var_fechaMayor = $arg_fechaMayor;}
  16.         if(!is_numeric($arg_fechaMenor)){
  17.             $var_fechaMenor = strtotime($arg_fechaMenor);
  18.         }else{$var_fechaMenor = $arg_fechaMenor;}
  19.         $var_resultadoTotalSegs = $var_fechaMayor - $var_fechaMenor; //Resultado en segundos
  20.         $var_resultadoTotalFinal = ""; //Por defecto
  21.         switch ($arg_obtener) {
  22.             case "SEGUNDOS":{
  23.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs;
  24.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  25.                 break;
  26.             }
  27.             case "MINUTOS":{
  28.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60;
  29.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  30.                 break;
  31.             }
  32.             case "HORAS":{
  33.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60/60;
  34.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  35.                 break;
  36.             }
  37.             case "DIAS":{
  38.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60/60/24;
  39.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  40.                 break;
  41.             }
  42.             case "SEMANAS":{
  43.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60/60/24/7;
  44.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  45.                 break;
  46.             }
  47.             case "MESES":{
  48.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60/60/24/30;
  49.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  50.                 break;
  51.             }
  52.             case "ANYOS":{
  53.                 $var_resultadoTotalFinal = $var_resultadoTotalSegs/60/60/24/365;
  54.                 if($arg_redondear) $var_resultadoTotalFinal = round($var_resultadoTotalFinal);
  55.                 break;
  56.             }
  57.             case "TODOABREVIA":{
  58.                 //Averiguamos el resto de unidades a partir de los segundos...
  59.                 //DIAS
  60.                     $var_dias=intval($var_resultadoTotalSegs/(60*60*24));
  61.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_dias*60*60*24);
  62.                     if($var_dias>0){$var_resultadoTotalFinal .= $var_dias . "d ";}
  63.                 //HORAS
  64.                     $var_horas=intval($var_resultadoTotalSegs/(60*60));
  65.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_horas*60*60);
  66.                     if($var_horas>0){$var_resultadoTotalFinal .= $var_horas . "h ";}
  67.                 //MINUTOS
  68.                     $var_minutos=intval($var_resultadoTotalSegs/60);
  69.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_minutos*60);
  70.                     echo $var_resultadoTotalFinal;
  71.                     if($var_minutos>0){$var_resultadoTotalFinal .= $var_minutos . "m ";}
  72.                 //SEGUNDOS
  73.                     $var_resultadoTotalFinal .= $var_resultadoTotalSegs . "s";
  74.                 break;
  75.             }
  76.             case "TODOFULL":{
  77.                 //Averiguamos el resto de unidades a partir de los segundos...
  78.                 //ANYOS
  79.                     $var_anyos=intval($var_resultadoTotalSegs/(60*60*24*365));
  80.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_anyos*60*60*24*365);
  81.                     if($var_anyos>0){$var_resultadoTotalFinal .= $var_anyos . "a ";}
  82.                 //MESES
  83.                     $var_meses=intval($var_resultadoTotalSegs/(60*60*24*30));
  84.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_meses*60*60*24*30);
  85.                     if($var_meses>0){$var_resultadoTotalFinal .= $var_meses . "mes ";}
  86.                 //SEMANAS
  87.                     $var_semanas=intval($var_resultadoTotalSegs/(60*60*24*7));
  88.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_semanas*60*60*24*7);
  89.                     if($var_semanas>0){$var_resultadoTotalFinal .= $var_semanas . "sem ";}
  90.                 //DIAS
  91.                     $var_dias=intval($var_resultadoTotalSegs/(60*60*24));
  92.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_dias*60*60*24);
  93.                     if($var_dias>0){$var_resultadoTotalFinal .= $var_dias . "d ";}
  94.                 //HORAS
  95.                     $var_horas=intval($var_resultadoTotalSegs/(60*60));
  96.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_horas*60*60);
  97.                     if($var_horas>0){$var_resultadoTotalFinal .= $var_horas . "h ";}
  98.                 //MINUTOS
  99.                     $var_minutos=intval($var_resultadoTotalSegs/60);
  100.                     $var_resultadoTotalSegs = $var_resultadoTotalSegs - ($var_minutos*60);
  101.                     if($var_minutos>0){$var_resultadoTotalFinal .= $var_minutos . "m ";}
  102.                 //SEGUNDOS
  103.                     $var_resultadoTotalFinal .= $var_resultadoTotalSegs . "s";
  104.                 break;
  105.             }
  106.         }
  107.         return ($var_resultadoTotalFinal);
  108.     }